javascript - 如何使用 puppeteer 在 <div> 列表中进行抓取

标签 javascript html web-scraping puppeteer

我正在寻找一种方法来使用 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/

相关文章:

php - 如何让 Youtube 视频有不同的播放器?

javascript - 我可以打开多个 Puppeteer 浏览器吗?

python - Xpath正确但Scrapy不起作用

JavaScript 动态适应 A4 尺寸模板中的内容

javascript - 如何将图像实现到自动完成脚本中?

javascript - 限制共享点中的某些搜索关键字

javascript - 如何从 parent 那里更新 child 的(从创建的列表中) Prop

jquery - Transformicons - 打开/关闭覆盖内容

javascript - 获取同一类的所有元素并通过 jquery 检测其中的第一个元素

java - 使用 JavaFX 显示 JTable