【问题标题】:vba scrape html - get element with dynamic classvba scrape html - 获取具有动态类的元素
【发布时间】:2019-06-17 12:22:27
【问题描述】:

使用 excel vba 我需要抓取日期 (2019-01-16)。 这段代码很好用:

Set wyjatek = ie.Document.getElementsByClassName("redesignTravelHistory tank-thlist__date 2019-01-16")(0)

但问题是,在我尝试抓取的每个 html 中,这个日期可能不同。 你知道怎么解决吗?

部分html:

<div class="redesignTravelHistory tank-thlist__date 2019-01-16">16/01/2019</div>

【问题讨论】:

  • 1.使用 getElementsByTagName("div") 获取所有 div 的集合。 2. 遍历该集合并使用className 属性读取类名。 3. 使用字符串函数或LIKE 匹配类名中的模式。

标签: vba web-scraping


【解决方案1】:

您可以使用带有 ^ 运算符的 css 属性 = 值选择器(值以 = 后的子字符串开头)

ie.document.querySelector("div[class^='redesignTravelHistory tank-thlist__date']")

如果可以有多个元素与之匹配,则使用 querySelectorAll 并索引到 nodeList 以获取正确的元素,例如索引 1

ie.document.querySelectorAll("div[class^='redesignTravelHistory tank-thlist__date']").item(1)

【讨论】:

    【解决方案2】:

    您正在使用包含 3 个类的第一个元素

    • 重新设计TravelHistory
    • tank-thlist__date
    • 2019-01-16

    我猜日期类“2019-01-16”是无关紧要的,可以去掉。

     Set wyjatek = ie.Document.getElementsByClassName("redesignTravelHistory tank-thlist__date")(0)
    

    【讨论】:

    • 哎呀...在我阅读您的帖子之前,我没有意识到您可以查询多个类名。感谢您接受我的回答。
    猜你喜欢
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 2011-10-11
    • 1970-01-01
    相关资源
    最近更新 更多