Web crawler 对整个网络进行爬网的指南?

Web crawler 对整个网络进行爬网的指南?,web-crawler,Web Crawler,我有这样的想法,想知道是否有可能在一台专用服务器(如Core2Duo、8gig ram、750gb磁盘100mbps)上抓取整个web(就像大男孩一样!) 我遇到过一篇这样做的论文……但我记不起这篇论文的标题了。这就像使用某种统计模型在一台专用服务器上爬行整个web一样 无论如何,想象一下从大约10000个种子URL开始,然后进行彻底的爬网 可能吗 我需要在网上爬行,但仅限于一个专用服务器。我如何做到这一点,是否已经有了开源解决方案 例如,请查看此实时搜索引擎。结果非常好,而且是最新更新的……

我有这样的想法,想知道是否有可能在一台专用服务器(如Core2Duo、8gig ram、750gb磁盘100mbps)上抓取整个web(就像大男孩一样!)

我遇到过一篇这样做的论文……但我记不起这篇论文的标题了。这就像使用某种统计模型在一台专用服务器上爬行整个web一样

无论如何,想象一下从大约10000个种子URL开始,然后进行彻底的爬网

可能吗

我需要在网上爬行,但仅限于一个专用服务器。我如何做到这一点,是否已经有了开源解决方案


例如,请查看此实时搜索引擎。结果非常好,而且是最新更新的……他们是怎么做到的?

我打赌这是可能的。你只需要有一个量子CPU和量子RAM

说真的,一台服务器无法赶上整个web的增长。谷歌使用了大量的服务器(如果不是数十万的话,也有几十台),它不能为你提供即时的索引


我想,如果你只限于一台服务器,需要对整个网络进行爬网,那么你真的需要爬网的结果。与其关注“如何抓取网络”,不如关注“如何使用谷歌提取所需数据”。一个很好的起点是:。

听起来可能,但两个真正的问题是网络连接和硬盘空间。作为一个对网络爬行几乎一无所知的人,我会从几TB的存储空间开始,随着我积累更多的信息和良好的宽带互联网连接,我会一路努力。一个深口袋是必须的

在网络上爬行在概念上很简单。将Web视为一个非常复杂的有向图。每个页面都是一个节点。每个链接都是一条有向边

你可以从一个假设开始,一个精心选择的出发点最终会导致其他每一个点(最终)。这并不是绝对正确的,但在实践中,我想你会发现这基本上是正确的。仍然有可能你需要多个(也许数千个)起点

您需要确保不在一次遍历中遍历同一页面两次。在实践中,遍历将花费很长的时间,这仅仅是一个问题,即您需要多长时间才能返回到特定节点,以及您如何检测和处理更改(意味着第二次访问页面时,它可能已经更改)


杀手将是你需要存储多少数据,以及一旦你拥有了数据,你想用它做什么。

我只是想知道整个互联网应该大于750 GB。此外,为索引web而设计的数据结构也占用了大量存储空间

根据您希望如何处理这么多数据(即使有可能),请参见此以获得替代解决方案:


。。。编辑:另外,别忘了,网络一直在变化,所以即使是规模相对较小的爬行操作(如分类广告网站,汇总来自许多来源的列表)也会在一个周期内刷新爬行,比如说,24小时周期。这时,网站所有者可能会也可能不会因为你的爬虫加载到他们的服务器上而感到不便。然后,根据你如何使用爬网内容,你必须考虑重复数据消除,因为你需要教会你的系统识别昨天的爬网结果是否与今天的不同等等。。。变得非常“模糊”,更不用说所需的计算能力了。

我相信你所指的论文是“IRLbot:扩展到60亿页及以上”。这是一个单服务器网络爬虫,由德克萨斯a&M的学生编写

撇开带宽、磁盘空间、爬行策略、robots.txt/politiness等问题不谈——我的主要问题是“为什么?”爬行整个web意味着你正在使用数百万web服务器的共享资源。目前,大多数网站管理员允许机器人抓取它们,前提是它们玩得很好,并且遵守礼貌抓取的隐式和显式规则

但是,每一个高容量的机器人在没有明显好处的情况下敲打一个网站,就会导致更多的网站关闭大门,除了那些大公司(谷歌、雅虎、必应等)。所以,在花太多时间研究“如何”之前,你真的想问“为什么”这个问题

假设你真的需要在一台服务器上抓取大部分的网页,那么你需要一个更胖的管道,更多的存储空间(例如,假设每页有2K压缩文本,1B页有2TB),更多的RAM,至少有4个真正的核心,等等。IRLbot纸张将是你最好的指南。您可能还想查看crawler commons项目中可重用的Java代码块


最后一句话要小心。一个无辜的错误很容易引发一个网站的问题,在这个时候,你将成为愤怒的站长火焰的接受者。因此,请确保您拥有厚皮肤:)

布卢姆过滤器,用于检测您去过的地方

会有误报,但您可以通过实现多个Bloom过滤器,旋转添加到哪个Bloom过滤器,并创建一个长度令人印象深刻的过滤器来解决这个问题


很抱歉,这么长时间后恢复了此线程,但我只想指出,如果您只是需要一个非常大的web数据集,有一种比尝试使用单个服务器对整个web进行爬网更简单的方法:只需下载服务器提供的免费爬网数据库。用他们的话说:

我们建立并维护一个开放的web爬网数据存储库,任何人都可以访问和分析这些数据


到今天为止,他们的数据库大小为PB,包含数十亿页(万亿链接)。只需下载它,并在那里执行您感兴趣的任何分析。

祝您旅途好运。我想知道爬行需要多长时间