【发布时间】:2018-12-31 19:05:09
【问题描述】:
我正在尝试使用xmlhttp 请求从网页中获取部分信息。当我执行我的脚本时,它会抛出一个错误Object Variable Or With---。但是,当我使用IE 尝试相同的操作时,我得到的内容就像魔术一样。
需要注意的最重要的一点是,我希望抓取的内容既不是 javascript 加密的,也不是动态生成的。所以,我应该让他们使用xhr。我哪里错了?
使用IE(正在工作):
Sub GetText()
Const Url As String = "https://www.baseball-reference.com/boxes/ANA/ANA201806180.shtml"
Dim IE As New InternetExplorer, HTML As HTMLDocument, post As Object
With IE
.Visible = False
.navigate Url
While .Busy = True Or .readyState < 4: DoEvents: Wend
Set HTML = .document
End With
Set post = HTML.querySelectorAll(".section_content")(2)
MsgBox post.innerText
End Sub
使用 XHR(不工作):
Sub GetText()
Const Url As String = "https://www.baseball-reference.com/boxes/ANA/ANA201806180.shtml"
Dim Http As New XMLHTTP60, HTML As New HTMLDocument, post As Object
With Http
.Open "GET", Url, False
.send
HTML.body.innerHTML = .responseText
End With
Set post = HTML.querySelectorAll(".section_content")(2)
MsgBox post.innerText
End Sub
我上面定义的selector 完美无缺。
我本可以在此处粘贴相关的html elements,但它们包含在comments 中。但是,我在上面提供了该网站的链接。
为了更清楚:我感兴趣的文本部分与该网页中的下面完全一样。
我的问题:如何使用 XHR 获取上述文本块(如上图所示)?
【问题讨论】:
-
我得到了与 IE 版本完全相同的错误。尝试 HTML.getElementsByClassName("section_content") MsgBox post.innerText Next 中的每个帖子
-
您使用 IE 会遇到同样的错误,因为您的
IE版本不支持.querySelector()@peakpeak。
标签: vba excel web-scraping xmlhttprequest