猿问

如何使用 puppeteer 在 <div> 列表中抓取

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


呼唤远方
浏览 260回答 2
2回答

aluckdog

puppeteer 中有一个特别方便的方法page.$$eval来处理这个任务:let&nbsp;result&nbsp;=&nbsp;await&nbsp;page.$$eval('.nameToRetrieve',&nbsp;names&nbsp;=>&nbsp;names.map(name&nbsp;=>&nbsp;name.textContent)); console.log(result);此方法在页面内运行 Array.from(document.querySelectorAll(selector)) 并将其作为第一个参数传递给 pageFunction。结果将是:[ ' Name 1 ', ' Name 2 ', ' Name 3 ' ]
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答