EXCEL VBA 获取指定URL网页的源码资源

VBA 获取网页的全部源码内容_20191201091118.png

获取网页的完整源码只是获取网络资源的一种,只是返回数据的格式有所不同,以及做出一定的处理!首先要有提取网络资源的Function:

'-----------------------------------------------
'|获取网络数据
'-----------------------------------------------
'|注意:当使用Body提取整个页面时必须使用StrConv转换成字符串
'|      HTML.body.innerHTML = StrConv(.responsebody, vbUnicode)
'-----------------------------------------------
Function getWebData(ByVal URL As String, Optional ByVal Method As String = "GET", Optional ByVal ReturnType As String = "Text", Optional ByVal Async As Boolean = False, Optional ByVal Username As String = "", Optional ByVal Password As String = "")
    
    On Error Resume Next
    
    '处理变量
    Method = IIf(UCase(Method) = "GET", "GET", "POST")
    
    '创建对象
    Dim xmlHttp As Object
    Set xmlHttp = CreateObject("Microsoft.XMLHTTP")    ' "Msxml2.ServerXMLHTTP"
    
    '发送请求
    xmlHttp.Open Method, URL, Async, Username, Password
    xmlHttp.Send
    
    '等待响应
    Do While xmlHttp.ReadyState <> 4
        DoEvents
    Loop
    
    '得到请求数据
    If xmlHttp.ReadyState = 4 Then
    
        '根据要求返回不同结果
        Select Case UCase(ReturnType)
            Case "TEXT"
                getWebData = xmlHttp.responsetext
            Case "BODY"
                getWebData = xmlHttp.responsebody
            Case "STREAM"
                getWebData = xmlHttp.responseStream
            Case "XML"
                getWebData = xmlHttp.responseXML
            Case Else
                getWebData = xmlHttp.responsetext
        End Select
        
    Else
        getWebData = "调用失败,错误代码:" & xmlHttp.Status    '返回错误结果
    End If
    
    '销毁对象
    Set xmlHttp = Nothing
    
End Function

第二步,就是提取数据,要使用 'responsebody' 的类型,由于该类型返回的不是字符串还需要做出处理转换成字符串,具体的方法如下:

'提取整个页面的HTML
MsgBox openTXT(StrConv(getWebData("http://data.eastmoney.com/stock/tradedetail.html", "get", "body"), vbUnicode))

你可能感兴趣的:(EXCEL VBA 获取指定URL网页的源码资源)