Как я могу получить внутренний текст динамических тегов HTML, используя Puppeteer.js (node.js) в TripAdvisor? - PullRequest
0 голосов
/ 10 декабря 2018

Как бы получить все 10 комментариев, расположенных на этой странице, с помощью цикла или функции Кукловода https://www.tripadvisor.com/Restaurant_Review-g294308-d3937445-Reviews-Maki-Quito_Pichincha_Province.html с использованием свойства innerText?

ЕдинственноеРешение, которое я придумала, - это получить externalHTML всего контейнера комментариев, а затем попытаться получить подкомпоненты, чтобы получить все комментарии, но это не оптимально, и я думаю, что это более сложный подход.Может быть, в Puppeteer есть более простое решение, которое я не могу найти?

Я делаю это в образовательных целях.Комментарии находятся в class="partial_entry", и я хочу получить innerText тега Dynamic Html (я хочу все 10), как показано здесь:

enter image description here

Если я открою div, содержащий <div class="review-container" data-reviewid="606551292" data-collapsed="true" data-deferred="false"><!--trkN:3-->, я получу еще один с id="review_582693262".Приступая к делу: если я доберусь до <div> с class="partial_entry", это будет то место, где находится мой комментарий.Я попробовал несколько вещей, но я получаю нулевое значение, потому что он не найден, так как родительский элемент <div> для каждого комментария имеет уникальный идентификатор, например id="review_xxxxxxxxx".

Это довольно сложно, так как идентификатор обзора равен autogenerated как id="review_xxxxxxxxx" и не может повторяться с циклом, копирующим путь CSS, так как у меня нет статического родителя.

1 Ответ

0 голосов
/ 13 декабря 2018

Почему бы просто не выбрать те элементы, которые имеют класс partial_entry?Это работает:

let comments = await page.evaluate(() =>
    [...document.querySelectorAll(".partial_entry")].map(item => item.textContent)
);

how this works

...