我正在构建一个大型网络爬虫,当在网络服务器场中的专用网络服务器上运行网页时抓取网页时,最佳实例数是多少。
答案 0 :(得分:4)
spare_memory_on_machine / memory_footprint_of_crawler_process * 0.95
答案 1 :(得分:4)
要制作大型抓取工具,您必须处理以下问题:
•无法将信息保存在一个数据库中。
•没有足够的RAM来处理巨大的索引
•多线程性能和并发性
•Crawler陷阱(通过更改网址,日历,会话ID等创建的无限循环)和重复的内容。
•从多台计算机抓取
•格式错误的HTML代码
•来自服务器的持续http错误
•没有压缩的数据库,这使得您对空间的需求大约增加了8倍。
•重新抓取例程和优先级。
•使用带压缩的请求(Deflate / gzip)(适用于任何类型的爬虫)。
还有一些重要的事情
•尊重robots.txt
•每个请求都有一个爬虫延迟,不会窒息Web服务器。
最佳线程配置将取决于您的代码..我正在使用.net运行100个进程。我建议你使用一个计划类来避免不必要的开放线程。
PS。如果您使用5个线程,则需要数年才能实现“大规模”网络爬行。