在编写vba网抓解决方案时,经常需要查看网页的源代码。
有些是直接输出到vbe的立即窗口,有些是用网抓软件查看。
本文介绍用WinHttpRequest对象直接将指定网页的源代码直接打开显示在文本文件中的方法,代码如下:
Sub QQ1722187970()
Dim oHtml As Object
Set oHtml = VBA.CreateObject("WinHttp.WinHttpRequest.5.1")
Dim sUrl As String
'指定要抓取的网站
sUrl = "http://www.mca.gov.cn/article/sj/xzqh/2018/201808/20180800010436.shtml"
Dim sCharset As String
'指定要抓取的网站的字符编码
sCharset = "utf-8"
With oHtml
.Open "GET", sUrl, False
.send
'获取返回的字节数组
bResult = .ResponseBody
'按照指定的字符编码显示
sResult = Byte2String(bResult, sCharset)
Debug.Print sResult
End With
Set oHtml = Nothing
End Sub
Function Byte2String(bContent, ByVal sCharset As String)
Const adSaveCreateOverWrite = 2
Const adSaveCreateNotExist = 1
Const adTypeBinary = 1
Const adTypeText = 2
Const adModeRead = 1
Const adModeWrite = 2
Const adModeReadWrite = 3
Dim oStream As Object
'创建流对象
Set oStream = CreateObject("ADODB.Stream")
With oStream
'打开流
.Open
'设置为字节模式
.Type = adTypeBinary
'写入字节
.write bContent
'将位置定位在第一个字节
.Position = 0
'设置为文本模式
.Type = adTypeText
'设置编码的字符集
.Charset = sCharset
'读取编码后的文本
Byte2String = .ReadText
sPath = Excel.ThisWorkbook.Path
sFilePath = sPath & "\view-source.txt"
'将源代码保存到文本文件中
.SaveToFile sFilePath, adSaveCreateOverWrite
'打开文本文件
Shell ("notepad " & sFilePath), vbMaximizedFocus
'关闭流对象
.Close
End With
End Function


0 分