Vba создать коллекцию с элементами HTML

Я пытаюсь поймать веб-данные с помощью VBA.

У меня есть такие строки HTML:

<div class="table-wrapper">
  <table class="mega-table">
    <thead>
       <tr>…</tr>
    </thead>
    <tbody>
       <tr>…</tr>
       <tr>…</tr>
       <tr>…</tr>
       <tr>…</tr>
    </tbody>
  </table>
</div>

Как я могу создать коллекцию для "tbody"? (Позже я хочу перебрать все содержащиеся в нем элементы (все "tr")).


person ProtoVB    schedule 17.08.2016    source источник
comment
Я пытался использовать .getElementsBy... но, как уже упоминалось здесь: stackoverflow.com/questions/15191847/ | в vba мы не можем написать: Document.getElementById(target).getElementsByTagName(tr).   -  person ProtoVB    schedule 17.08.2016


Ответы (2)


Это должно работать для того, что вам нужно. По сути, вы хотите выбрать элемент, содержащий таблицу, а затем выбрать все TR этой таблицы.

Обновлено, чтобы включить выбор тела таблицы.

 dim Elements as Object

 Set Elements = Browser.Document.getElementsByClassName("mega-table")(0).getElementsByTag‌​Name("tbody")‌(0).getElementsByTag‌​Name("tr")‌
person Ryan Wildry    schedule 17.08.2016
comment
Я буду отлаживать, но я не думаю, что это правильно, так как этот скрипт также поймает tr под thead, и я сказал, что мне нужны только те, что под tbody. - person ProtoVB; 17.08.2016

Вы можете использовать селектор CSS:

browser.document.querySelectorAll(".mega-table tbody tr")

Это возвращает nodeList, а не "коллекцию"; но вы все равно можете зациклить его длину.

В нем говорится, что выберите теги tr внутри тега tbody внутри элементов с className (".") из mega-table.

Результаты запроса CSS

person QHarr    schedule 21.06.2018