【发布时间】:2020-08-22 01:16:58
【问题描述】:
我这里有这段代码,它应该在this Reddit page 上找到一个 HTML 元素,然后从中返回一个值,然后将其存储在一个从零开始的一维数组中。 (我有一个名为 IE 的 Internet Explorer 实例)
Dim awardelements As Object
Dim awards As String
awardelements = IE.document.querySelector("#siteTable > div")(0)
awards = awardelements.getAttribute("data-gildings")
results(i + 1, 14) = awards
所以我试图获得“数据镀金”的价值(帖子获得的奖项数量),但我在 awardelements = IE.document.querySelector("#siteTable > div")(0) 行上遇到了自动化错误。我不确定我是否可以像 tbh 那样使用 JS querySelector,所以这可能是问题所在。如果有人能指出我正确的方向,我将不胜感激!
谢谢^^
【问题讨论】:
-
在赋值对象类型变量时需要使用
Set -
已修复,谢谢!但是我仍然在同一条线上遇到“自动化错误”,所以我仍然很遗憾地卡住了
-
您应该使用 MSHTML COM 接口而不是使用
Object,这样您就可以拥有类型安全性。 -
恐怕这超出了我的水平@Dai :(不幸的是我才刚刚开始学习VBA!
-
执行
Dim doc As IElementSelector : Set doc = IE.document: Dim result As IHTMLDOMChildrenCollection : Set result = doc.querySelector( "#siteTable > div" )然后在调试器中检查result而不使用(0)索引器,只是为了确保问题不是您的选择器语法或确定seelctor 是否返回零元素。
标签: javascript html excel vba web-scraping