繁体   English   中英

Puppeteer Crawler 大型爬行

[英]Puppeteer Crawler large scale crawling

我们正在使用 Puppeteer 编写 web 爬虫。 我们编写的 puppeteer 爬虫程序对于页面数约为 1,500 - 5,000 的网站执行和爬取网站 URL 没有问题。但是,当我们为超过 5,000 个的网站执行时,如果由于某些错误或崩溃而在中间中断,则需要重新开始。 如果发生任何错误,如何使基于 Puppeteer 的 web 爬虫从最后一次爬取的 state 恢复? Puppeteer 中有内置函数吗? 如何让这个 puppeteer headless chrome web 爬过队列系统?

您可以将要抓取的页面的 URL 存储在某种队列中,例如使用AWS SQS 然后,您可以使用Node.js在不同的服务器或容器上运行多个 Javascript 进程。 这些工作作业从公共队列中一一获取链接,并以无头模式使用Puppeteer抓取相应的页面。 如果发现更多应该被爬取的链接,那么它们也可以被添加到这个队列中(当然需要避免返回到已经爬取的页面的链接,因为它们会导致无限循环)。 结果可以存储在不同的队列或数据库中。 如果工作进程崩溃,可以使用常用的开源实用程序之一重新启动它来管理和监视进程。 最终原始队列将是空的,这表明所有页面都已被爬取。

我自己用 Puppeteer.js 搭建了爬虫来爬取 Google 和 Bing,苦苦挣扎了很久。 每次浏览器崩溃或页面调用挂起时,我强烈建议使用永远监视器重新启动爬虫。 其次,hilly 建议在页面超过 60 秒没有响应时添加page.relaod (使用 promise 进行)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM