在编写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 分