Puppeteer:如何识别 SPA 已到达底部,无法再向下滚动?

Puppeteer: How to recognize, that a SPA has reached its bottom, and no more scrolling-down is possible?

我正在为 Nodejs 中的 Puppeteer 构建 abstraction/simplification,以抓取单页应用程序。它将执行的基本操作之一是多次向下滚动页面,以触发 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 调用次数。我想要的是在无法再滚动时以某种方式识别一种情况。喜欢:我们已经到了页面的末尾。

知道如何抽象出这种情况吗?

没有万无一失的办法,不过我是按照这个顺序处理无穷大的,

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

知道它完成的最简单方法是巧妙地将 try...catch 用于 page.waitFor 函数。