我正在构建一个大型网络爬虫,当在位于互联网服务器场中的专用网络服务器上运行网络时,爬取网络时有多少实例是最佳的。
问问题
378 次
2 回答
4
spare_memory_on_machine / memory_footprint_of_crawler_process * 0.95
于 2009-06-21T10:06:13.040 回答
4
要制作大型爬虫,您将不得不处理一些问题,例如:
• 不可能将所有信息保存在一个数据库中。
• 没有足够的 RAM 来处理巨大的索引
• 多线程性能和并发性
• 爬虫陷阱(通过更改 url、日历、会话 ID... 创建无限循环)和重复内容。
• 从多台计算机上爬网
• 格式错误的 HTML 代码
• 来自服务器的持续 http 错误
• 没有压缩的数据库,这使您对空间的需求增加了大约 8 倍。
• 重新制定例行程序和优先事项。
• 使用压缩请求(Deflate/gzip)(适用于任何类型的爬虫)。
还有一些重要的事情
• 尊重 robots.txt
• 每次请求都会有爬虫延迟,以免让网络服务器窒息。
最佳线程配置将取决于您的代码。我正在使用 .net 运行 100 个进程。我建议您使用调度类来避免不必要的打开线程。
PS。如果您使用 5 个线程,您将需要数年时间才能达到“大规模”网络抓取。
于 2011-12-19T14:17:12.823 回答