【发布时间】:2018-09-05 04:26:18
【问题描述】:
我检查了浏览器生成的页面和 VBA XMLHTTP 请求的字符串响应具有相同的树结构,其中 a 标记是 aside 的子标记。
不幸的是,当我想返回 a 的标题属性 bookie 名称时,访问 aside 的第一个孩子时出错。结果表明,我需要使用代码假设 a 标记是 aside 的兄弟才能使其正常工作:
必填参考:Microsoft HTML 库
Sub SendRequest()
Dim XMLHTTP As Object: Set XMLHTTP = CreateObject("MSXML2.XMLHTTP.6.0")
Dim htmlEle1 As IHTMLElement
Dim htmlDoc As New HTMLDocument
Dim urlName As String
urlName = "https://www.oddschecker.com/golf/the-masters/2018-us-masters/winner"
With XMLHTTP
.Open "GET", urlName, False
.send
htmlDoc.body.innerHTML = .responseText
For Each htmlEle1 In htmlDoc.getElementsByClassName("eventTableHeader")(0).Children
If InStr(htmlEle1.className, "bookie-area") <> 0 Then
Debug.Print htmlEle1.Children(1).getAttribute("title")
End If
Next htmlEle1
End With
End Sub
这种行为是否与 aside 是 HTML5 元素而 VBA 认为它是一个半关闭标签这一事实有关?
【问题讨论】:
-
代替
htmlDoc.body.innerHTML = .responseText尝试htmlDoc.clear()然后htmlDoc.write(.responseText) -
无法使用 HtmlDoc.write -“编译错误:函数或接口标记为受限,或函数使用 Visual Basic 不支持的自动化类型”
-
你能用
IHTMLDocument2接口把文档转换成另一个对象吗?
标签: vba xmlhttprequest