我用它来获取网页
Dim xhr As MSXML2.XMLHTTP60
Set xhr = New MSXML2.XMLHTTP60
On Error Resume Next
With xhr
.Open "GET", URL, False
.send
If .ReadyState = 4 And .Status = 200 Then
Set doc = New MSHTML.HTMLDocument
doc.body.innerHTML = .responseText
htmlRequestHTTP = True
Else
MsgBox "Internet Error, please check:" & vbNewLine & "Ready state: " & .ReadyState & _
vbNewLine & "HTTP request status: " & .Status
htmlRequestHTTP = False
End If
End With
Run Code Online (Sandbox Code Playgroud)
但是 doc.getElementsByTagName("META") 错过了 HEAD 部分的标签。现在 .response 已完成(我已检查),那么我如何访问 HEAD 元素?谢谢,
不要写入文档正文。写入文档本身。
Set doc = New MSHTML.HTMLDocument
doc.write HttpGet(URL)
MsgBox doc.getElementsByTagName("META").length
Run Code Online (Sandbox Code Playgroud)
辅助功能HttpGet:
Function HttpGet(url) As String
With New MSXML2.XMLHTTP60
.open "GET", url, False
On Error Resume Next
.send
If .Status = 200 Then
HttpGet = .responseText
Else
MsgBox "HTTP request status: " & .Status, , "HttpGet Error"
End If
On Error GoTo 0
End With
End Function
Run Code Online (Sandbox Code Playgroud)
作为一般提示,不要使用On Error Resume Next 除了下一个语句。
理想情况下,将可能在专用函数中失败的语句包装起来,以将覆盖的代码区域保持在On Error Resume Next绝对最小,就像我所做的那样。