Puppeteer:如何识别SPA已经到达其底部,并且不可能再向下滚动?

时间:2018-10-18 18:13:37

标签: node.js puppeteer

我正在Nodejs中为Puppeteer构建抽象/简化形式,以抓取单页应用程序。它将执行的基本操作之一是向下滚动页面多次,以触发AJAX调用。我所做的基本上是:

(()=>{
  page.on('response', async res => {   
   if (res.includes('/someAjaxAction')) {  
   numResponses++
  }
})

  while(numResponses<20){

    await scrollDown();//Calling my function that scrolls down.

    await Promise.delay(400)//Creating a delay just in case...
}
})()

我设置了onResponse事件侦听器,并计数执行了适当的Ajax调用的次数。我无限地向下滑动,直到满足此条件,就是这样-我可以使用完整的HTML。

问题是,这将迫使客户端编码器提供他们期望的许多ajax调用。我想以某种方式识别无法滚动的情况。就像:我们已经到达页面的结尾。

关于我如何抽象这种情况的任何想法?

1 个答案:

答案 0 :(得分:1)

没有万无一失的方法,但是我按此顺序处理无限,

  • 从目标收集数据
  • 删除目标元素
  • 滚动特定的时间
  • 等待新的目标元素出现
  • ...循环遍历直到没有内容

最简单的方法是将try...catch用于page.waitFor函数。