【问题标题】:Getting the value of an HTML Element获取 HTML 元素的值
【发布时间】: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


【解决方案1】:

querySelector 返回单个节点,而不是您可以索引的集合。并且您需要设置关键字。

Dim awards As Object, awardCount As String

Set awards = ie.document.querySelector("#siteTable > div")
awardCount = awards.getAttribute("data-gildings")

【讨论】:

  • 我不知道我怎么没有意识到我使用的是 querySelector 而不是 querySelectorAll。这样可行!再次感谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-11
  • 2018-12-06
  • 1970-01-01
  • 2015-01-18
  • 1970-01-01
  • 2023-02-07
相关资源
最近更新 更多