如何用vba将网抓的网页源代码直接打开显示在文本文件中?

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

仅有1条评论 发表评论

  1. 匿名 /

    0 分

发表评论