скрести источник HTML VBA - PullRequest
2 голосов
/ 07 июня 2019

Мне нужно удалить некоторую информацию из Интернета, используя vba. Это выдержка из моего кода. Это нормально, но на сайте есть 2 класса с одинаковыми именами. Так что мой код пишет только последнее значение. Я хочу это:

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

записывает только первое значение класса "sample", найденное на сайте.

Как я могу это сделать? Спасибо

 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 ]

3 голосов
/ 07 июня 2019

Вы можете повысить эффективность, используя querySelector, который возвращает только первое совпадение, а не всю коллекцию (или список узлов)

Sheets("01").Range("DW" & Number) = html.querySelector(".sample").getAttribute("data-id")
2 голосов
/ 07 июня 2019

Чтобы сослаться на первый элемент коллекции классов, вы можете использовать свойство Item, для которого индекс основан на 0.Таким образом, вы можете заменить ваш For Each/Next следующей строкой ...

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

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...