抓取整个网络的指南?

时间:2010-01-17 08:10:30

标签: web-crawler

我刚想到这个想法,并想知道是否可以在一个专用服务器上抓取整个网络(就像大男孩一样!)(如Core2Duo,8gig ram,750gb磁盘100mbps)

我遇到了一篇论文,其中已经完成了......但我不记得这篇论文的标题。它就像是使用一些统计模型在一个专用服务器上抓取整个网络。

无论如何,假设从大约10,000个种子网址开始,并进行详尽的抓取....

有可能吗?

我需要抓取网络,但仅限于专用服务器。我怎么能这样做,那里有一个开源解决方案吗?

例如,请参阅此实时搜索引擎。 http://crawlrapidshare.com结果非常好并且刚刚更新......他们是如何做到的?

8 个答案:

答案 0 :(得分:22)

抓取网页 概念 简单。将Web视为一个非常复杂的有向图。每个页面都是一个节点。每个链接都是有向边。

你可以假设一个精心挑选的起点最终将导致每一个点(最终)。这不是严格正确的,但在实践中,我认为你会发现它主要是是真的。你仍然需要多个(可能是数千个)起点。

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

杀手将是你需要存储多少数据以及你想要用它做什么。

答案 1 :(得分:7)

我相信你所指的那篇论文是“IRLbot:扩展到60亿页以上”。这是由Texas A& M的学生编写的单个服务器网络爬虫。

不考虑带宽,磁盘空间,爬行策略,robots.txt / politeness等问题 - 我得到的主要问题是“为什么?”对整个Web进行爬网意味着您正在使用来自数百万个Web服务器的共享资源。目前,大多数网站管理员都允许机器人抓取机器人,只要他们玩得很好并遵守礼貌抓取的隐式和明确规则。

但是,除了大男孩(谷歌,雅虎,必应等)之外,每个大型机器人都会在没有明显好处的情况下摧毁一个网站,导致几个网站关闭了大门。所以你真的想在花费太多时间研究方法之前问问题。

假设您确实需要在单个服务器上抓取大部分Web,那么您需要获得更大的管道,更多的存储空间(例如,假设每页2K压缩文本,因此1B页面为2TB ),更多RAM,至少4个真实核心等.IRLbot论文将是您最好的指南。您可能还想查看crawler-commons项目以获取可重用的Java代码块。

最后提醒一句。一个无辜的错误很容易引发一个网站的问题,那时你将成为一个愤怒的网站管理员火焰的接收端。所以要确保你的皮肤很厚:)

答案 2 :(得分:6)

很抱歉,经过这么长时间恢复这个线程,但我只是想指出,如果你只是需要一个非常大的网络数据集,那么获得它的方法要比尝试自己抓取整个网页更容易。使用单个服务器:只需下载Common Crawl project提供的免费抓取数据库。用他们的话说:

  

我们构建并维护一个可以由任何人访问和分析的Web爬网数据的开放存储库。

截至今天,他们的数据库大小为PB级,包含数十亿页(数万亿条链接)。只需下载它,并执行您对此感兴趣的任何分析。

答案 3 :(得分:3)

布隆过滤器,用于检测您去过的地方。

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

http://en.wikipedia.org/wiki/Bloom_filter

答案 4 :(得分:2)

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

说真的,单个服务器无法赶上整个网络的增长。谷歌使用了一大堆服务器(数十个,如果不是数十万个),它无法为你提供即时索引。

我想如果你只限于一台服务器并且需要抓取整个网络,那么你真的需要抓取这些抓取的结果。而不是专注于“如何抓取网络”,而是专注于“如何使用Google提取您需要的数据”。一个很好的起点是:Google AJAX Search API

答案 5 :(得分:2)

请参阅此内容以获取替代解决方案,具体取决于您要查看的数据(即使可能):http://searchenginewatch.com/2156241

...编辑:另外,不要忘记,网络一直在变化,所以即使是相对较小规模的抓取操作(比如来自众多来源汇总列表的分类广告网站)也会在一个周期中刷新他们的抓取,比方说,像一个24小时的周期。那时网站所有者可能会或可能不会因您的抓取工具加载到服务器上的负载而感到不便。然后根据您使用已抓取内容的方式,您需要重复数据删除才能进行思考,因为您需要教会您的系统识别昨天的抓取结果是否与今天的抓取结果不同等等......变得非常模糊“,更不用说所需的计算能力了。

答案 6 :(得分:0)

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

答案 7 :(得分:0)

我只是想知道整个互联网应该大于750 GB。此外,用于索引Web的数据结构也需要大量存储。