Nutch:
主页:
ApacheNutch是一个高度可扩展的和可伸缩的开源网页爬虫软件项目。源于ApacheLuceneTM,项目多样化,目前由两个代码库组成,即:
1. Nutch1.x:一个非常成熟的爬虫产品。1.x版本支持细粒度的配置,依赖于一个很好的分布式处理的ApacheHadoop数据结构。
2. Nutch2.x:一个新兴的可供选择的版本,它的灵感来自于1.x版本,但是2.x和1.x在一个关键领域中不同。2.x版本的存储是脱离任何特定的底层数据存储,使用ApacheGora™处理对象持久性映射。这意味着我们可以实现一个极其灵活的模型/栈用于存储一切(比如获取时间、状态、内容解析文本、outlinks、inlinks等等)到NoSQL数据库中的解决方案。
可插拔和模块化当然有着它的好处,Nutch提供了可扩展的接口,比如Parse(解析)、Index(索引)和Scoringfilter的自定义实现(例如用于解析的ApacheTika)。另外
Nutch可以在一个单个的机器上面运行,但是可以从运行一个Hadoop集群获取很多它想要的。
1)Nutch是基于Hadoop的,它帮助我们更好的理解Hadoop
2)在wiki页面:可以看到很多关于Nutch的相关文档和练习文档的链接;在Nutch首页中的Documentation会有更多的文档信息。
Nutch的优缺点
优点
Nutch支持分布式抓取,并有Hadoop支持,可以进行多机分布抓取,存储和索引。另外很吸引人的一点在于,它提供了一种插件框架,使得其对各种网页内容的解析、各种数据的采集、查询、集群、过滤等功能能够方便的进行扩展,正是由于有此框架,使得 Nutch 的插件开发非常容易,第三方的插件也层出不穷,极大的增强了 Nutch 的功能和声誉。
缺点
Nutch的爬虫定制能力比较弱
Heritrix:
主页:
Heritrix 是一个由 java 开发的、开源的网络爬虫,用户可以使用它来从网上抓取想要的资源。其最出色之处在于它良好的可扩展性,方便用户实现自己的抓取逻辑。
Heritrix的优缺点
优点
Heritrix的爬虫定制参数多
缺点
单实例的爬虫,之间不能进行合作。在有限的机器资源的情况下,却要复杂的操作。只有官方支持,仅仅在Linux上进行了测试。每个爬虫是单独进行工作的,没有对更新进行修订。在硬件和系统失败时,恢复能力很差。很少的时间用来优化性能。
相对于Nutch,Heritrix仅仅只是一个爬虫工具,没有提供搜索引擎。如果要对抓取的站点排序必须要实现类似于Pagerank的复杂算法。
Crawler4j
主页:
Crawler4j是一个开源的Java类库提供一个用于抓取Web页面的简单接口。可以利用它来构建一个多线程的Web爬虫。
Crawler4j的优缺点
优点
多线程采集
内置了Url 过滤机制,采用的是BerkeleyDB 进行url的过滤。
可扩展为支持结构化提取网页字段,可作为垂直采集用
缺点
不支持动态网页抓取,例如网页的ajax部分
不支持分布式采集,可以考虑将其作为分布式爬虫的一部分,客户端采集部分
---------------------------------------------------------------------------------
Nutch与Heritrix比较
Nutch 只获取并保存可索引的内容。Heritrix则是照单全收。力求保存页面原貌
Nutch 可以修剪内容,或者对内容格式进行转换。
Nutch 保存内容为数据库优化格式便于以后索引;刷新替换旧的内容。而Heritrix 是添加(追加)新的内容。
Nutch 从命令行运行、控制。Heritrix 有 Web 控制管理界面。
Nutch 的定制能力不够强,不过现在已经有了一定改进。Heritrix 可控制的参数更多。
Heritrix 是个 "archivalcrawler" -- 用来获取完整的、精确的、站点内容的深度复制。包括获取图像以及其他非文本内容。抓取并存储相关的内容。对内容来者不拒,不对页面进行内容上的修改。重新爬行对相同的URL不针对先前的进行替换。爬虫通过Web用户界面启动、监控、调整,允许弹性的定义要获取的URL。
Nutch支持分布式抓取,Heritrix仅支持单机抓取,不能多机协同工作。
crawler | 功能单一 | 支持分布式爬取 | 定制能力 | 镜像保存 |
Nutch | × | √ | 弱 | × |
Heritrix | √ | × | 强 | √ |
总之,Nutch的文档比较的全面,但需要了解和学习的内容相对也会比较的多。但是如果以后项目需要进行Hadoop的部署,Nutch很值得进一步的研究。
Heritrix的文档也比较的多,对于主题爬虫而言,在Heritrix上面进行扩展也是一个很好的选择。
Crawler4j是一个多线程爬虫,相关文档较少,容易部署和学习。
参考博客:
http://m.blog.csdn.net/blog/angle7777/21692981