gpt4 book ai didi

javascript - 使用新的 proxyUrl 重试失败的页面

转载 作者:行者123 更新时间:2023-12-02 22:26:03 25 4
gpt4 key购买 nike

我开发了一个基于 Actor+PuppeteerCrawler+Proxy 的爬虫,想要重新抓取失败的页面。为了增加重新抓取的机会,我想切换到另一个 proxyUrl。这个想法是,使用修改后的 launchPupperteer 函数和不同的 proxyUrl 创建一个新的爬虫,并重新排队失败的页面。请检查下面的示例代码。

但不幸的是,尽管我通过使用 drop 并重新打开来重置请求队列,但它不起作用。是否可以通过使用具有不同 proxyUrl 的 PuppeteerCrawler 重新抓取失败的页面以及如何重新抓取失败的页面?

最诚挚的问候,沃尔夫冈

for(let retryCount = 0; retryCount <= MAX_RETRY_COUNT; retryCount++){

if(retryCount){
// Try to reset the request queue, so that failed request shell be rescraped
await requestQueue.drop();
requestQueue = await Apify.openRequestQueue(); // this is necessary to avoid exceptions
// Re-enqueue failed urls in array failedUrls >>> ignored although using drop() and reopening request queue!!!
for(let failedUrl of failedUrls){
await requestQueue.addRequest({url: failedUrl});
}
}

crawlerOptions.launchPuppeteerFunction = () => {
return Apify.launchPuppeteer({
// generates a new proxy url and adds it to a new launchPuppeteer function
proxyUrl: createProxyUrl()
});
};

let crawler = new Apify.PuppeteerCrawler(crawlerOptions);
await crawler.run();

}

最佳答案

我认为你的方法应该有效,但另一方面它应该没有必要。我不确定 createProxyUrl 的作用。

您可以提供带有 auto 用户名的通用代理 URL,该 URL 将使用 Apify 上的所有数据中心代理。或者您可以提供proxyUrls直接到 PuppeteerCrawler

请不要忘记,您必须切换浏览器才能从代理获取新的 IP。本文更多内容 - https://help.apify.com/en/articles/2190650-how-to-handle-blocked-requests-in-puppeteercrawler

关于javascript - 使用新的 proxyUrl 重试失败的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59066960/

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