获取网页的完整源码只是获取网络资源的一种,只是返回数据的格式有所不同,以及做出一定的处理!首先要有提取网络资源的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))