puppeteer - Puppeteer 无限滚动不起作用
问题描述
我制作了一个脚本来从网站上获取一些数据,我在我的脚本中实现了无限滚动,但它只滚动一次。我已经调试过了:滚动功能被触发但不起作用。这是我下面的代码,分页功能会按时触发,但滚动不会。
const puppeteer = require("puppeteer");
let page;
let finalResults = [];
let count = 0;
async function fStarMain() {
const browser = await puppeteer.launch({ headless: true });
page = await browser.newPage();
//const { page } = puppeteerCore();
await page.setViewport({ width: 1200, height: 1500 });
await page.goto("https://fusionread.com/search-result/bitcoin_hack", {
waitUntil: "networkidle2",
});
async function paginate() {
let count = 0;
let nextClick = await page.$(".jss85");
console.log(nextClick);
if (!nextClick && !count) {
console.log(count);
await Promise.all([
//page.waitForSelector(".list-border li"),
await page.waitFor(500),
await page.evaluate("window.scrollTo(0, document.body.scrollHeight)"),
]);
console.log("count increment");
await collectData();
} else {
count = null;
}
//await page.waitFor(1000);
}
function printData(results) {
// console.log("function trigggered");
for (let value of results) {
console.log(value);
}
}
async function collectData() {
console.log("Data collection started");
count++;
let results = await page.evaluate(() => {
return [
...document.querySelectorAll(".infinite-scroll-component > div"),
].map((element) => ({
title: element.querySelector("a").innerText,
}));
});
//console.log(results);
printData(results);
await paginate();
// return results;
}
//console.log(results);
//console.log("recheck pagination");
await collectData();
}
module.exports = fStarMain;
解决方案
推荐阅读
- python - 无法找到可运行的浏览器(尝试使用 webbrowser 单击按钮)
- javascript - Redux 扩展运算符与映射
- python-3.x - 无法将网络抓取输出作为字典返回
- python - 将对象传递给函数时出现类型错误
- python - 我正在使用 cvxpy 测试一个简单的 MILP 程序。但是,在我稍微增加变量数量后,求解器停止收敛
- xamarin.forms - 命名空间 Xamarin 中不存在类型或命名空间名称 Forms
- vue.js - 表格的动态高度(vuetify)
- javascript - 如果其他字段中存在值,如何根据需要设置字段?
- javascript - 如何通过匹配单词来减少输入提供的建议数量?
- apache-spark - 是否可以删除 IgniteRDD 的共享缓存中的单个值?