目前主流的Java爬虫框架主要有Nutch、Crawler4j、WebMagic、WebCollector等。

1. 分布式爬虫:Nutch

github地址:https://github/andrewcao95/nutch-crawler
Nutch是apache旗下的一个用Java实现的开源索引引擎项目,通过nutch,诞生了hadoop、tika、gora。Nutch的设计初衷主要是为了解决下述两个问题:

  1. 商业搜索引擎存在商业利益的考虑。 有的商业搜索引擎允许竞价排名(比如百度),搜索结果不是纯粹的根据网页本身的价值进行排序,这样有的搜索结果不全是和站点内容相关。
  2. 商业搜索引擎不开源。 Nutch是开放源代码,因此任何人都可以查看它的排序算法是如何工作的。Nutch对学术搜索和政府类站点的搜索来说是个好选择。因为一个公平的排序结果是非常重要的。

Nutch1.2版本之后,Nutch已经从搜索引擎演化为网络爬虫,演化为两大分支版本:1.X和2.X,最大区别在于2.X对底层的数据存储进行了抽象以支持各种底层存储技术,其中:

  • Nutch1.2之后是一个完整的搜索引擎
  • Nutch1.7之后是一个基于HDFS的网络爬虫
  • Nutch2.2.1之后是一个基于Gora的网络爬虫

Nutch 2.x 与 Nutch 1.x 相比,剥离出了存储层,放到了gora中,可以使用多种数据库,例如HBase, Cassandra, MySql来存储数据了。Nutch 1.7 则是把数据直接存储在HDFS上。

2. Crawler4j

crawler4j是一个开源的Java抓取Web爬虫,它提供了一个简单的抓取Web的界面。 使用它,可以在几分钟内设置一个多线程的网络爬虫。

3. WebMagic

WebMagic的结构分为Downloader、PageProcessor、Scheduler、Pipeline四大组件,并由Spider将它们彼此组织起来。这四大组件对应爬虫生命周期中的下载、处理、管理和持久化等功能。在这四个组件中我们需要做的就是在PageProcessor中写自己的业务逻辑,比如如何解析当前页面,抽取有用信息,以及发现新的链接。

4. WebCollector

WebCollector是一个无须配置、便于二次开发的JAVA爬虫框架(内核),它提供精简的的API,只需少量代码即可实现一个功能强大的爬虫。WebCollector-Hadoop是WebCollector的Hadoop版本,支持分布式爬取。

目前WebCollector在Github上维护:https://github/CrawlScript/WebCollector

更多推荐

java常用的爬虫框架