我需要使用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
答案 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")
希望这会有所帮助!