gpt4 book ai didi

javascript - 使用 Puppeteer 在循环中抓取多个 URL

转载 作者:行者123 更新时间:2023-12-03 13:30:14 25 4
gpt4 key购买 nike

我有一组 URL 可以从以下位置抓取数据:

urls = ['url','url','url'...]
这就是我正在做的事情:
urls.map(async (url)=>{
await page.goto(url);
await page.waitForNavigation({ waitUntil: 'networkidle' });
})
这似乎不等待页面加载并很快访问所有 URL(我什至尝试使用 page.waitFor )。
我想知道我是否在做一些根本错误的事情,或者不建议/支持这种类型的功能。

最佳答案

map , forEach , reduce等,在它们继续迭代它们正在迭代的迭代器的下一个元素之前,不会等待它们内部的异步操作。

在执行异步操作时,有多种方法可以同步遍历迭代器的每个项目,但在这种情况下,我认为最简单的方法是简单地使用普通 for运算符,它会等待操作完成。

const urls = [...]

for (let i = 0; i < urls.length; i++) {
const url = urls[i];
await page.goto(`${url}`);
await page.waitForNavigation({ waitUntil: 'networkidle2' });
}

正如您所期望的那样,这将一个接一个地访问 URL。如果你对使用 await/async 进行串行迭代感到好奇,你可以看看这个答案: https://stackoverflow.com/a/24586168/791691

关于javascript - 使用 Puppeteer 在循环中抓取多个 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46293216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com