如何在TripAdvisor中使用Puppeteer.js(node.js)获得Dynamic Html标签的innerText?

时间:2018-12-10 02:22:03

标签: html node.js chromium puppeteer

如何使用innerText属性使用循环或伪造函数https://www.tripadvisor.com/Restaurant_Review-g294308-d3937445-Reviews-Maki-Quito_Pichincha_Province.html获取此页面中的所有10条评论?

我想出的唯一解决方案是获取整个注释容器的externalHTML,然后尝试对所有注释添加子字符串,但这并不是最佳选择,我认为这是一种更困难的方法。也许我找不到在Puppeteer中更简单的解决方案?

我这样做是出于教育目的。注释位于 class="partial_entry" 中,我想获取一个Dynamic Html标记的innerText(我想要全部10个),就像在这里看到的那样:

enter image description here

如果我要在其中打开包含<div class="review-container" data-reviewid="606551292" data-collapsed="true" data-deferred="false"><!--trkN:3-->的div,我将得到另一个id="review_582693262"。直截了当,如果我到达{strong> <div>class="partial_entry",这就是我的评论所在的位置。我尝试了一些尝试,但是却得到了空值,因为未找到该值,因为每个注释的父级<div>具有唯一的ID,例如id="review_xxxxxxxxx"

这很困难,因为评论ID与autogenerated类似id="review_xxxxxxxxx",并且由于我没有静态的父对象而无法通过复制CSS路径的循环进行迭代。

1 个答案:

答案 0 :(得分:1)

为什么不只选择那些具有partial_entry类的元素?这有效:

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

how this works