我正在寻找一种方法来使用 puppeteer 高效地抓取以下格式的信息。 假设我在网站上有一个这样划分的列表:
<div id="list">
<div class="item" pos="0">
<a href="www.somewebsite.com">
<div class="nameToRetrieve"> Name 1 </div>
</div>
<div class="item" pos="1">
<a href="www.somewebsite.com">
<div class="nameToRetrieve"> Name 2 </div>
</div>
<div class="item" pos="2">
<a href="www.somewebsite.com">
<div class="nameToRetrieve"> Name 3 </div>
</div>
</div>
如何获取姓名信息(姓名1、姓名2、姓名3?
我已经尝试将它们放入一个对象中,然后放入一个数组中,但我仍然对如何处理它感到困惑。
const listOfStuff = document.getElementById('list').getElementsByClassName('itemResult')
最佳答案
有一个特别方便的方法page.$$eval
对于 puppeteer 中的这个任务:
let result = await page.$$eval('.nameToRetrieve', names => names.map(name => name.textContent));
console.log(result);
This method runs Array.from(document.querySelectorAll(selector)) within the page and passes it as the first argument to pageFunction.
结果将是:
['姓名 1', '姓名 2', '姓名 3']
关于javascript - 如何使用 puppeteer 在 <div> 列表中进行抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56421888/