标签:
网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。
? RBSE (Eichmann,1994)是第一个发布的爬虫。它有两个基础程序。第一个是“spider”,抓取队列中的内容到一个关系数据库中,第二个程序是“mite”,是一个修改后的www的ASCII浏览器,负责从网络上下载页面。
? WebCrawler(Pinkerton,1994)是第一个公开可用的 用来建立全文索引的一个子程序,他使用库www来下载页面;另外一个程序使用广度优先来解析获取URL并对其排序;它还包括一个根据选定文本和查询相似程度爬行的实时爬虫。
? World Wide Web Worm (McBryan, 1994)是一个用来为文件建立包括标题和URL简单索引的爬虫。索引可以通过grep式的Unix命令来搜索。
? Google Crawler (Brin and Page,
1998)用了一些细节来描述,但是这些细节仅仅是关于使用C++和Python编写的、一个早期版本的体系结构。因为文本解析就是
文检索和URL抽取的过程,所以爬虫集成了索引处理。这里拥有一个URL服务器,用来给几个爬虫程序发送要抓取的URL列表。在文本解析的时候,新发现的
URL传送给URL服务器并检测这个URL是不是已经存在,如果不存在的话,该URL就加入到URL服务器中。
? CobWeb (da Silva et al.,
1999)使用了一个中央“调度者”和一系列的“分布式的搜集者”。搜集者解析下载的页面并把找到的URL发送给调度者,然后调度者反过来分配给搜集者。
调度者使用深度优先策略,并且使用平衡礼貌策略来避免服务器超载。爬虫是使用Perl语言编写的。
? Mercator (Heydon and Najork, 1999; Najork and Heydon,
2001)是一个分布式的,模块化的使用java编写的网络爬虫。它的模块化源自于使用可互换的的“协议模块”和“处理模块”。协议模块负责怎样获取网页
(例如使用HTTP),处理模块负责怎样处理页面。标准处理模块仅仅包括了解析页面和抽取URL,其他处理模块可以用来检索文本页面,或者搜集网络数据。
? WebFountain (Edwards et al.,
2001)是一个与Mercator类似的分布式的模块化的爬虫,但是使用C++编写的。它的特点是一个管理员机器控制一系列的蚂蚁机器。经过多次下载页
面后,页面的变化率可以推测出来,这时,一个非线性的方法必须用于求解方程以获得一个最大的新鲜度的访问策略。作者推荐在早期检索阶段使用这个爬虫,然后
用统一策略检索,就是所有的页面都使用相同的频率访问。
? PolyBot [Shkapenyuk and Suel,
2002]是一个使用C++和Python编写的分布式网络爬虫。它由一个爬虫管理者,一个或多个下载者,一个或多个DNS解析者组成。抽取到的URL被
添加到硬盘的一个队列里面,然后使用批处理的模式处理这些URL。平衡礼貌方面考虑到了第二、三级网域(例如www.example.com 和 www2.example.com
都是三级网域),因为第三级网域通常也会保存在同一个网络服务器上。
? WebRACE (Zeinalipour-Yazti and Dikaiakos,
2002)是一个使用java实现的,拥有检索模块和缓存模块的爬虫,它是一个很通用的称作eRACE的系统的一部分。系统从用户得到下载页面的请求,爬
虫的行为有点像一个聪明的代理服务器。系统还监视订阅网页的请求,当网页发生改变的时候,它必须使爬虫下载更新这个页面并且通知订阅者。WebRACE最
大的特色是,当大多数的爬虫都从一组URL开始的时候,WebRACE可以连续地的接收抓取开始的URL地址。
? Ubicrawer (Boldi et al.,
2004)是一个使用java编写的分布式爬虫。它没有中央程序。它有一组完全相同的代理组成,分配功能通过主机前后一致的散列计算进行。这里没有重复的
页面,除非爬虫崩溃了(然后,另外一个代理就会接替崩溃的代理重新开始抓取)。爬虫设计为高伸缩性和允许失败的。
? FAST Crawler (Risvik and Michelsen, 2002) 是一个分布式的爬虫,在Fast Search&Transfer中使用,关于其体系结构的一个大致的描述可以在[citation needed]找到。
? Labrador,一个工作在开源项目Terrier Search Engine上的非开源的爬虫。
? TeezirCrawler是一个非开源的可伸缩的网页抓取器,在Teezir上使用。该程序被设计为一个完整的可以处理各种类型网页的爬虫,包括各种JavaScript和HTML文档。爬虫既支持主题检索也支持非主题检索。
? Spinn3r, 一个通过博客构建Tailrank.com反馈信息的爬虫。 Spinn3r是基于java的,它的大部分的体系结构都是开源的。
? HotCrawler,一个使用c语言和php编写的爬虫。
? ViREL Microformats Crawler,搜索公众信息作为嵌入到网页的一小部分。
除了上面列出的几个特定的爬虫结构以外,还有Cho (Cho and Garcia-Molina, 2002)和Chakrabarti (Chakrabarti, 2003)发布的一般的爬虫体系结构。
开源爬虫
? DataparkSearch是一个在GNU GPL许可下发布的爬虫搜索引擎。
? GNU Wget是一个在GPL许可下,使用C语言编写的命令行式的爬虫。它主要用于网络服务器和FTP服务器的镜像。
? Heritrix是一个互联网档案馆级的爬虫,设计的目标为对大型网络的大部分内容的定期存档快照,是使用java编写的。
? Ht://Dig在它和索引引擎中包括了一个网页爬虫。
? HTTrack用网络爬虫创建网络站点镜像,以便离线观看。它使用C语言编写,在GPL许可下发行。
? ICDL Crawler是一个用C++编写,跨平台的网络爬虫。它仅仅使用空闲的CPU资源,在ICDL标准上抓取整个站点。
? JSpider是一个在GPL许可下发行的,高度可配置的,可定制的网络爬虫引擎。
? LLarbin由Sebastien Ailleret开发;
? Webtools4larbin由Andreas Beder开发;
? Methabot是一个使用C语言编写的高速优化的,使用命令行方式运行的,在2-clause BSD许可下发布的网页检索器。它的主要的特性是高可配置性,模块化;它检索的目标可以是本地文件系统,HTTP或者FTP。
? Nutch是一个使用java编写,在Apache许可下发行的爬虫。它可以用来连接Lucene的全文检索套件;
? Pavuk是一个在GPL许可下发行的,使用命令行的WEB站点镜像工具,可以选择使用X11的图形界面。与wget和httprack相比,他有一系列先进的特性,如以正则表达式为基础的文件过滤规则和文件创建规则。
? WebVac是斯坦福WebBase项目使用的一个爬虫。
? WebSPHINX(Miller and Bharat, 1998)是一个由java类库构成的,基于文本的搜索引擎。它使用多线程进行网页检索,html解析,拥有一个图形用户界面用来设置开始的种子URL和抽取下载的数据;
? WIRE-网络信息检索环境(Baeza-Yates 和 Castillo, 2002)是一个使用C++编写,在GPL许可下发行的爬虫,内置了几种页面下载安排的策略,还有一个生成报告和统计资料的模块,所以,它主要用于网络特征的描述;
? LWP:RobotUA(Langheinrich,2004)是一个在Perl5许可下发行的,可以优异的完成并行任务的 Perl类库构成的机器人。
? Web Crawler是一个为.net准备的开放源代码的网络检索器(C#编写)。
? Sherlock Holmes收集和检索本地和网络上的文本类数据(文本文件,网页),该项目由捷克门户网站中枢(Czech web portal Centrum)赞助并且主用商用于这里;它同时也使用在Onet.pl。
? YaCy是一个基于P2P网络的免费的分布式搜索引擎(在GPL许可下发行);
? Ruya是一个在广度优先方面表现优秀,基于等级抓取的开放源代码的网络爬虫。在英语和日语页面的抓取表现良好,它在GPL许可下发行,并且完全使用Python编写。按照robots.txt有一个延时的单网域延时爬虫。
? Universal Information Crawler快速发展的网络爬虫,用于检索存储和分析数据;
? Agent Kernel,当一个爬虫抓取时,用来进行安排,并发和存储的java框架。
? Arachnod.net是一个使用C#编写,需要SQL Server 2005支持的,在GPL许可下发行的多功能的开源的机器人。它可以用来下载,检索,存储包括电子邮件地址,文件,超链接,图片和网页在内的各种数据。
? Dine是一个多线程的java的http客户端。它可以在LGPL许可下进行二次开发。
从广度进行分类的话,爬虫有两类。通用型和集中型。通用型是采集所有能解析的文档。它们主要通过URL过滤技术来实现这一过程。而集中型爬虫主要爬取特定内容的文档,如爬取sina博客,格式为固定内容也是我们感兴趣的。
幸运的是,有开源的爬虫可以使用
在java中,nutch和heritrix都提供了爬虫的实现。Nutch是apache lucene的子项目,地址是http://lucene.apache.org/nutch/
。这个项目非常稳定,并且文档丰富。Nutch把多个网页存储在一个文件中。对于大的爬虫来说,这么降低I/O读写,性能更加优秀。
Heritrix是互联网存档的web爬虫。项目地址为http://crawler.archive.org/
。Heritrix专注于大型爬虫的实现。许可证为LGPL。
另外提一下,还有一个项目值得关注,那就是apache tika。项目地址为http://tika.apache.org/
。tika使用解析器从文档中发现以及提取元数据和文本内容。
Google:《Java开源Web爬虫分类列表》
(1)
ItSucks是一个java web spider(web机器人,爬虫)开源项目。支持通过下载模板和正则表达式来定义下载规则。提供一个swing GUI操作界面。下载地址:http://itsucks.sourceforge.net/
(2)
WebSPHINX
WebSPHINX是一个Java类包和Web爬虫的交互式开发环境。Web爬虫(也叫作机器人或蜘蛛)是可以自动浏览与处理Web页面的程序。WebSPHINX由两部分组成:爬虫工作平台和WebSPHINX类包。http://www.cs.cmu.edu/~rcm/websphinx/.
(3)
JSpider
JSpider:是一个完全可配置和定制的Web Spider引擎.你可以利用它来检查网站的错误(内在的服务器错误等),网站内外部链接检查,分析网站的结构(可创建一个网站地图),下载整个Web站点,你还可以写一个JSpider插件来扩展你所需要的功能。http://j-spider.sourceforge.net/
(4)
Arale
Arale主要为个人使用而设计,而没有像其它爬虫一样是关注于页面索引。Arale能够下载整个web站点或来自web站点的某些资源。Arale还能够把动态页面映射成静态页面。 http://web.tiscali.it/_flat/arale.jsp.html
(5)
Web-Harvest
Web-Harvest是一个Java开源Web数据抽取工具。它能够收集指定的Web页面并从这些页面中提取有用的数据。Web-Harvest主要是运用了像XSLT,XQuery,正则表达式等这些技术来实现对text/xml的操作。 http://web-harvest.sourceforge.net/
标签:
原文地址:http://www.cnblogs.com/timdes/p/5098233.html