我是Puppeteer的新手,我正在尝试从使用相同类的两个div获取textContent。
<div class="post-item">
<div class="post-item-info">
<span class="post-item-status post-comment"></span>
3
</div>
<div class="post-item-info">
<span class="post-item-status post-vote"></span>
5
</div>
</div>
我期望的结果是返回数组[3,5]。我当前的代码如下。
let postInfo = element.querySelector('.post-item-info');
问题在于它仅返回第一个。请让我知道该怎么做。
答案 0 :(得分:2)
{{1}}
答案 1 :(得分:2)
您的选择器应类似于const nodes = element.querySelectorAll('.post-item-info');
。然后要访问返回的集合中的单个项目,请使用传统的for循环,例如
for(let i = 0; i < nodes.length; i++){
const currentNode = nodes[i];
// doStuffWith(currentNode);
}
答案 2 :(得分:1)
一些简洁的方法来获取这些文本内容的数组:
const texts = await page.$$eval('.post-item-info',
divs => divs.map(({ innerText }) => innerText));
const texts = await page.evaluate(() =>
[...document.querySelectorAll('.post-item-info'')].map(({ innerText }) => innerText));
答案 3 :(得分:0)
像这样获得它们:
let elements = document.getElementsByClassName('post-item-info')
它返回一个数组,然后可以在其上循环。此外,对于相同的情况,您也可以看到这个Github问题: