【问题标题】:VBA script to scrape a single HTML element's value用于抓取单个 HTML 元素值的 VBA 脚本
【发布时间】:2016-06-05 06:53:51
【问题描述】:

我查看了大约 30 个不同的问题,每个问题都涉及“getelementbyID”。我的问题是我需要抓取的元素没有 id:

我看到它在“h6”类或标签内,但是

    msgbox IEObj.Document.getelementsbytagname("h6").Value
    msgbox IEObj.Document.getelementsbyclassname("h6").Value

只返回“对象不支持此属性或方法”。我究竟做错了什么?? (其余代码只是设置了一个名为 IEObj 的 IE 对象,并导航到该页面,因此并不重要)。

【问题讨论】:

  • 如果我们可以看到更多的 html,可能会更有用。
  • getElementsbyClassName 和 getElementsByTagName 会返回一个数组。基本上它会返回所有项目,因为 Class 和 tagName 不像 ID 那样是唯一的。您需要指定您想要的项目。喜欢:IeObj.Document.getElementsByTagName("h6")(0).InnerText

标签: html excel vba internet-explorer web-scraping


【解决方案1】:

你必须找到内文是“预期交货”的h6。然后,获取h6的innertext。

dim webH6 as object, webTag as object, deliveryDate as variant
    for each webH6 in ie.document.getelementsbytagname("h6")
        if webH6.getelementsbytagname("a")(0).innertext = "Expected delivery" then
            deliveryDate = trim(replace(webH6.innertext, ":", ""))
            exit for
        end if
    next webH6

【讨论】:

  • 是的,这应该可以,但我在第二行收到“对象不支持此方法”错误。严重地。这就是我首先来到这里的原因,因为我看到的每个教程和帮助网站都给出了相同的建议,并且给出了相同的错误......
  • 我将第 2 行从 ie.getelementsbytagname("h6") 更正为 ie.document.getelementsbytagname("h6")
  • @C-Love511 如果我的回答能解决你的问题,你能接受我的回答吗?我是新来的,所以我需要声望。
【解决方案2】:

好的,我上面的答案是正确的。

其实所有的教程都是。

当我遍历元素时,我不断收到“权限被拒绝”错误 (70)。事实证明,该网站检测到脚本并出于安全原因阻止它们运行。否则,代码应该可以完美运行!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    相关资源
    最近更新 更多