网页css js 抓取助手(百忙之中抽时间编写了这个小程序,功能是:完美保存整个网页)
优采云 发布时间: 2022-01-04 19:15网页css js 抓取助手(百忙之中抽时间编写了这个小程序,功能是:完美保存整个网页)
我从繁忙的日程中抽出时间来编写这个小程序。功能是完美保存整个网页,包括:图片、JS脚本、CSS样式,修改网页源代码进行“本地化”。因为火了,连浏览器自带这个功能都不知道,就自己做了一个。这个程序虽然不大,但是涉及到三大问题(后面会详细说明)。
本来不打算放源码的,既然浏览器有这个功能,那我就放出源码供大家学习!这个程序的效果和浏览器的效果完全一样!而且我对比了一下,得到的js、css、图片都不亚于浏览器得到的。可以参考这个玩:做一个网站全站下载器。当然你永远不能下载数据库.....
使用说明:
1.填写网页地址,点击前往,即可激活一键下载。加载网页需要时间。如果加载前点击一键下载,会有提示。尝试在网速更好的时候使用它!
2.下载完成后,会在软件目录下生成一个以网页标题命名的文件夹。所有必要的文件都存储在这里。以网页标题命名的 HTM 文件即为保存的页面。在这种情况下,双击查看的效果和在网上查看是一样的!.
程序截图:
解决的问题:
1. 判断网页已经加载完毕。以前,已知目的地的网页可以通过“标记方法”来判断,但在这个程序中一切都是未知的。因此,必须使用新的方法。这里使用了HTML对象的Onload事件,结合webbrowser控件完美实现了判断网页加载完成的完成。这是目前最安全、最准确、最可靠的方法!适用于所有环境。
确定网页已经加载一直很头疼,至少在VB中是这样。网上提到的方法基本都行不通。更好的是有时它有效,有时它不起作用。现在我将发布一个代码来结束这个问题
'引用“Microsoft HTML Object Library”
Dim WithEvents page As HTMLWindow2 '注意要定义成全局的
Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
Set page = Me.WebBrowser1.document.parentWindow
End Sub
Private Sub page_onload()
Debug.Print "加载完毕"
End Sub
2.获取网页js和css。我看到很多人在猪八戒上发帖求一个程序,请求网页中的所有js和css。其实这个不难,百度一下,可以发现javascript语言提供了这个接口。下面我将演示如何使用这个接口来获取。
首先使用 webbrowser 控件加载要提取的网页。
获取js:
<p>strBasicHTM = WebBrowser1.Document.documentElement.outerHTML
WebBrowser1.Navigate "javascript:str='
\n';c=document.scripts;for(i=0;i