Web crawler 如何抓取数十亿页?
可以在一台服务器上抓取数十亿页吗?hmm。。如果你可以每秒“爬行”1页,那么你每天可以总共爬行86400页(完成10亿页需要11574.074天,根据每秒页面速度计算所需时间)。。 需要耐心。。 当然还有存储空间 大规模爬行(10亿页)是一个难题。以下是一些问题:Web crawler 如何抓取数十亿页?,web-crawler,Web Crawler,可以在一台服务器上抓取数十亿页吗?hmm。。如果你可以每秒“爬行”1页,那么你每天可以总共爬行86400页(完成10亿页需要11574.074天,根据每秒页面速度计算所需时间)。。 需要耐心。。 当然还有存储空间 大规模爬行(10亿页)是一个难题。以下是一些问题: 网络带宽。假设每个页面都是10Kb,那么您所说的总共是10Kb 需要获取10 TB的数据 网络延迟/服务器速度慢/拥塞意味着您无法实现与网络连接的理论带宽类似的效果。多线程你的爬虫只能帮这么多 我假设您需要存储从数十亿页中提取的信息
- 网络带宽。假设每个页面都是10Kb,那么您所说的总共是10Kb 需要获取10 TB的数据
- 网络延迟/服务器速度慢/拥塞意味着您无法实现与网络连接的理论带宽类似的效果。多线程你的爬虫只能帮这么多
- 我假设您需要存储从数十亿页中提取的信息
- 您的HTML解析器需要处理以各种奇怪方式破坏的网页
- 为了避免陷入循环,您需要检测到您已经“完成了此页面”
- 页面会发生变化,因此您需要重新访问它们
- 您需要处理“robots.txt”和其他控制(行为良好的)爬虫行为的约定
祝你好运 佩奇和布林(谷歌)1998年发表的原始论文描述了10天内在4台机器上爬行2500万页。他们每台机器一次打开300个连接。我认为这还是相当不错的。在我自己对运行Linux的现成机器的实验中,我可以可靠地同时打开100-200个连接 爬行时需要做三件主要的事情:(1)选择下一步爬行的内容,(2)获取这些页面,(3)存储这些页面。对于(1)您需要实现某种优先级队列(即,进行广度优先搜索或OPIC),您还需要跟踪您去过的地方。这可以使用布卢姆过滤器完成。Bloom过滤器(在Wikipedia上查找)也可用于存储页面是否有robot.txt文件以及给定url的前缀是否为