【发布时间】:2019-08-13 15:13:45
【问题描述】:
我正在尝试滚动自动加载页面,在此过程中我想获取出现(和消失的元素)。
我的代码看起来像这样,滚动效果很好,但我无法让我的 puppeteer 代码工作以检测元素并保存它们的值(代码确实在滚动功能之外工作)
async function autoScroll(page) {
await page.evaluate(async () => {
await new Promise((resolve, reject) => {
let totalHeight = 0;
let distance = 100;
let timer = setInterval(async () => {
let scrollHeight = document.body.scrollHeight;
window.scrollBy(0, distance);
totalHeight += distance;
console.log("scrolling"); // That one never shows up
await getUsers(); // Trying to fetch elements on every scroll
if (totalHeight >= scrollHeight) {
clearInterval(timer);
resolve();
}
}, 100);
});
});
}
async function getUsers() {
let hrefs = await page.$$('div > a');
for (let i = 0; i < hrefs.length; i = i++) { adding each link to database }
-- 我想要实现的是,每次滚动到页面底部时,getUsers 函数都会获取特定 div 中的所有链接,如果它们不存在,则将它们添加到数据库中但是从 SetInterval 调用函数似乎不起作用
如何在滚动页面时包含我的 puppeteer 异步功能?
【问题讨论】: