我正在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调用。我想以某种方式识别无法滚动的情况。就像:我们已经到达页面的结尾。
关于我如何抽象这种情况的任何想法?
答案 0 :(得分:1)
没有万无一失的方法,但是我按此顺序处理无限,
最简单的方法是将try...catch
用于page.waitFor
函数。