我刚刚有了这个想法,想知道是否有可能爬行整个网络(就像大男孩一样!)在单个专用服务器上(如Core2Duo,8G内存,750 on磁盘100 like)。
我曾经读过一篇论文,题目是done....but,我想不起来这篇论文的标题了。这就像是在一台专用服务器上使用某种统计模型抓取整个网络。
无论如何,想象一下从大约10,000个种子URL开始,然后进行详尽的爬行……
有可能吗?
我需要爬网,但仅限于一个专用的服务器。我该怎么做呢?有没有开源的解决方案?
例如,看看这个实时搜索引擎。http://crawlrapidshare.com结果非常好,新鲜的updated....how,他们这样做了吗?
发布于 2010-01-17 16:25:27
从概念上讲,抓取网络是一件简单的事情( simple )。将Web视为一个非常复杂的有向图。每一页都是一个节点。每个链接都是一个有向边。
您可以从这样一个假设开始:一个精心选择的起点最终将通向每个其他点(最终)。严格来说,这并不是真的,但在实践中,我想你会发现这大部分都是真的。不过,你仍然有可能需要多个(可能是数千个)的起点。
您需要确保不会两次遍历同一页面(在一次遍历中)。在实践中,遍历将花费很长时间,这只是一个问题,在您返回到特定节点之前需要多长时间,以及您如何检测和处理更改(这意味着当您第二次到达页面时,它可能已经更改)。
关键在于你需要存储多少数据,以及一旦你有了这些数据,你想要做什么。
发布于 2015-08-31 07:36:16
很抱歉过了这么久才恢复这个帖子,但我只想指出,如果你只是需要一个非常大的web数据集,有一个比试图自己用一台服务器抓取整个web要容易得多的方法:只需下载Common Crawl project提供的免费抓取数据库。用他们的话说:
我们建立和维护一个开放的网络爬行数据存储库,任何人都可以访问和分析。
到今天为止,他们的数据库是in大小,包含数十亿个页面(数万亿个链接)。只需下载它,并在那里执行您感兴趣的任何分析。
发布于 2010-06-04 00:49:08
我相信你所指的论文是"IRLbot: Scaling to 60亿Pages and Beyond“。这是一个由德克萨斯农工学院的学生编写的单服务器网络爬虫。
抛开带宽、磁盘空间、爬行策略、robots.txt/礼貌等问题不谈,我得到的主要问题是“为什么?”抓取整个web意味着您正在使用来自数百万个web服务器的共享资源。目前大多数网站管理员允许机器人抓取他们,只要他们表现良好,遵守隐含和明确的礼貌抓取规则。
但是,每一个高容量的机器人在没有明显好处的情况下敲打一个网站,都会导致更多的网站关闭除了大公司之外的所有网站(谷歌、雅虎、必应等)。所以你真的想在花太多时间在怎么做之前问个为什么的问题。
假设你真的需要在一台服务器上抓取很大一部分网页,那么你需要一个更粗的管道,更多的存储空间(例如,假设每页2K的压缩文本,所以1B的页面是2TB ),更多的内存,至少4个真实的核心,等等。IRLbot论文将是你最好的指南。您可能还希望在crawler-commons项目中查找可重用的Java代码块。
最后要注意的是。一个无心的错误很容易引发一个网站的问题,那时你将成为愤怒的站长火焰的接收端。所以要确保你的脸皮很厚:)
https://stackoverflow.com/questions/2080381
复制相似问题