刮HTML源vba

时间:2019-06-07 14:49:44

标签: html excel vba web-scraping

我需要使用vba从网上抓取一些信息。这是我的代码的一部分。可以,但是该站点有两个具有相同名称的类。所以我的代码只写最后一个值。我想要那个:

Sheets(“ 01”)。Range(“ DW”&number)= source.getAttribute(“ data-id”)

仅写入在网站上找到的“样本”类的第一个值。

我该怎么办? 谢谢

 With http
    .Open "GET", site, False                
    .send
    html.body.innerHTML = .responseText
End With
For Each source In html.getElementsByClassName("sample")

Sheets("01").Range("DW" & number) = source.getAttribute("data-id")  


Next source
Next number

2 个答案:

答案 0 :(得分:3)

使用querySelector可以提高效率,该方法仅返回第一个匹配项,而不返回整个集合(或nodeList)

Sheets("01").Range("DW" & Number) = html.querySelector(".sample").getAttribute("data-id")

答案 1 :(得分:2)

要引用类集合的第一个元素,可以使用Item属性,该属性的索引从0开始。因此,您可以将For Each/Next替换为以下行...

Sheets("01").Range("DW" & Number) = html.getElementsByClassName("sample").Item(0).getAttribute("data-id")

希望这会有所帮助!