Java爬虫

Java编写的开源Web爬虫

  1. Apache Nutch
    实现语言: Java
    GitHub星标数: 1743
    官方支持链接

简介:

Apache Nutch是一种高度可扩展、可伸缩的开源Web爬虫软件项目。
如果要列出最好的开源Web爬虫列表,Apache Nutch无疑金榜题名。
作为一种用于数据挖掘的高度可扩展、可伸缩的开源代码Web数据抽取软件项目,Apache Nutch得到了广泛的使用。
Nutch支持单机运行,但是在Hadoop集群上运行可最大化地发挥其强大能力。
全球范围内很多数据分析人员和科研人员、应用开发人员和Web文本挖掘工程师都在使用Apache Nutch。
Apache Nutch是一种Java编写的跨平台解决方案。
特性:

默认情况下,爬取数据和分析数据是独立的过程。
广泛支持多种文档格式,包括纯文本、HTML/XHTML+XML、XML、PDF、ZIP等。
使用XPath和命名空间实现映射。
通过Hadoop支持分布式文件系统。
链接图形式的数据库。
支持NTLM认证。
– 官方文档: https://wiki.apache.org/nutch/

– 官方网站: http://nutch.apache.org/

  1. Heritrix
    实现语言: Java
    GitHub星标数: 1236
    官方支持链接
    简介:

在使用Java编写的免费开源Web爬虫中,Heritrix是其中一种得到广泛使用的工具。事实上,它是一种可扩展、Web规模、存档质量(archival-quality)的Web爬取项目。
Heritrix是一种扩展能力和性能很好的解决方案,支持用户即刻爬取并归档一组网站。此外,它在设计上考虑了robots.txt禁止规则和META机器人标签。
Heritrix可运行在Linux/Unix和Windows系统上。
特性:

HTTP认证。
NTLM认证。
链接抽取中的XSL转换。
独立于搜索引擎。
是一种成熟并稳定的平台。
高度可配置。
支持在任一机器上运行。
– 官方文档: https://github.com/internetarchive/heritrix3/wiki/Heritrix%203.0%20and%203.1%20User%20Guide

– 官方网站: https://github.com/internetarchive/heritrix3b
3. ACHE爬虫
实现语言: Java
GitHub星标数: 154
官方支持链接

简介:

ACHE是一种专用于特定用途的Web爬虫。
ACHE爬取满足特定标准的Web页面。例如,属于特定领域并包含用户指定模式的页面。
不同于通用爬虫,ACHE使用页面分类器遴选特定领域中的相关和无关页面。
页面分类器可以是基本的正则表达式(例如,匹配所有包含给定单词的页面),也可以基于机器学习的分类模型。ACHE也可以自动学习如何对链接做优先处理,实现高效地定位相关内容,避免检索无关的页面内容。
特性:

对固定网站列表的正常爬取。
通过自动链接优先处理,发现并爬取新的相关网站。
可配置不同类型的页面分类器(例如,机器学习、正则表达式等)。
持续重新爬取站点,实现页面更新的发现。
使用ElasticSearch对爬取页面做索引。
实时搜索爬取页面的Web接口。
用于监控爬虫的REST API和基于Web的用户接口。
使用TOR代理爬取隐含服务。
– 官方文档: http://ache.readthedocs.io/en/latest/

– 官方网站: https://github.com/ViDA-NYU/ache

  1. Crawler4j
    实现语言: Java
    GitHub星标数: 3039
    官方支持链接
    简介:

crawler4j是一种Java编写的开源Web爬虫,提供了爬取Web网站的基本接口。
开发人员可以使用crawler4j在数分钟内建立一个多线程Web爬虫。
– 官方文档: https://github.com/yasserg/crawler4j

– 官方网站: https://github.com/yasserg/crawler4j

  1. Gecco
    实现语言: Java
    GitHub星标数: 1245
    官方支持链接
    简介:

Gecco是一种使用Java开发的轻量级Web爬虫,易于使用。
Gecco集成了jsoup、httpclient、fastjson、spring、htmlunit、redission等优秀框架。用户只需要配置一系列jQuery风格选择器,就能很快地建立一个爬虫。
Gecco框架具有优秀的扩展能力。框架基于一些开放式和封闭式设计原则,对改进封闭,对扩展开放。
特性:

易于使用,使用jQuery风格选择器抽取元素。
支持页面中的异步Ajax请求。
支持页面JavaScript变量抽取。
使用Redis实现分布式爬取(参见gecco-redis文档)。
支持使用Spring开发业务逻辑(参见gecco-spring文档)。
支持htmlunit扩展(参见gecco-htmlunit文档)。
支持多种扩展机制。
支持下载UserAgent的随机选择。
支持下载代理服务器的随机选取。
– 官方文档: https://github.com/xtuhcy/gecco

– 官方网站: https://github.com/xtuhcy/gecco

  1. BUbiNG
    实现语言: Java
    GitHub星标数:24
    官方支持链接
    简介:

BUbiNG令人惊喜,它可称为下一代的开源Web爬虫。BUbiNG是一种Java开发的完全分布式爬虫(无需中央协调),每秒可爬取数千个网页,并支持采集大规模数据集。
BUbiNG的分布式是基于高速协议实现的,因此可以获得非常高的通量。
BUbiNG提供对海量数据的大规模爬取。它完全可配置、易于扩展,并可集成垃圾信息检测。
特性:

高度并行。
完全分布式。
使用JAI4J。JAI4J是一种基于JGroups实现的瘦功能层,实现任务指派。
(当前)使用剥离网页的指纹,检测近似的重复内容。
快速。
大规模爬取。
– 官方文档: http://law.di.unimi.it/software/bubing-docs/index.html

– 官方网站: http://law.di.unimi.it/software.php#bubing

  1. Narconex
    实现语言:Java
    官方支持链接

简介:

对于寻求可满足企业级需求的开源Web爬虫的用户而言,Narconex是一种很好的工具。
Norconex支持用户爬取任何Web内容。用户可以独立运行这种全功能数据采集器,或是将其集成在自己的应用中。
支持所有操作系统。可在具有一般容量的单体服务器上爬取数百万信息。此外,Narconex提供多种内容和元数据操作特性,还可以抽取页面中特定的图像。
特性:

多线程。
支持按各种计划任务,抽取不同时间段的数据。
从HTML、Word、PDF等多种文件格式中抽取文本内容。
抽取文档相关的元数据。
支持抽取使用用JavaScript渲染的页面。
检测语言。
支持翻译。
可配置爬取速度。
可检测发生修改或已被删除的文档。
支持使用外部命令分析或操作文档。
– 官方文档: http://www.norconex.com/collectors/collector-http/getting-started

– 官方网站: http://www.norconex.com/collectors/collector-http/

  1. WebSPHINX
    实现语言: Java
    当前尚不提供官方支持。

简介:

WebSphinix是一种非常易于使用的可定制Web爬虫。它设计用于高级Web用户和Java编程人员,支持他们自动爬取小部分Web。
WebSphinix数据抽取解决方案也提供了一种全面的Java类库和交互式软件开发环境。WebSphinix包括两部分:爬虫基准测试(Crawler Workbench),WebSPHINX类库。
爬虫基准测试提供了很好的用户图形接口,支持用户配置并控制定制的Web爬虫。
WebSPHINX类库为使用Java编写Web爬虫提供支持。
WebSphinix支持运行在Windows、Linux、Mac和Android IOS上。
特性:

以图的方式可视化Web页面采集。
将多个页面组合为单个文档,以供查看和打印。
支持抽取所有满足设定模式的文本。
支持HTML解析。
支持robot.txt禁止标准。
通用HTML转换。
多线程Web页面检索。
– 官方文档: https://www.cs.cmu.edu/~rcm/websphinx/doc/index.html

– 官方网站: https://www.cs.cmu.edu/~rcm/websphinx/#about

  1. Spiderman
    实现语言: Java
    GitHub星标数: 2400
    官方支持链接
    简介:

Spiderman是一种Java开源Web数据抽取工具。它采集特定的Web页面,并从中抽取有用数据。
Spiderman主要使用XPath和正则表达式等技术抽取实际数据。
特性:

更高的性能。
持久化集合状态。
分布式。
支持JavaScript。

– 官方文档: https://gitee.com/l-weiwei/spiderman
– 官方网站: https://gitee.com/l-weiwei/spiderman

  1. WebCollector :
    实现语言: Java
    GitHub星标数: 1986
    官方支持链接
    简介:

WebCollector是一种基于Java的开源Web爬虫框架。
它为实现Web爬取功能提供了一下基本的接口。用户可以使用它在五分钟内建立起一个多线程爬虫。
特性:

快速。
– 官方文档: https://github.com/CrawlScript/WebCollector

– 官方网站: https://github.com/CrawlScript/WebCollector

  1. Webmagic
    实现语言: Java
    GitHub星标数: 6891
    官方支持链接

简介:

WebMagic是一种可扩展的爬虫框架。
WebMagic涵盖了爬虫的整个生命周期,包括下载、URL管理、内容抽取和持久化。
可用于简化一些特定爬虫的开发。
特性:

高度灵活的简单内核。
提供实现HTML抽取的简单API。
使用POJO标注定制爬虫,无需配置。
支持多线程和分布式。
易于集成。
– 官方文档: http://webmagic.io/docs/en/

– 官方网站: https://github.com/code4craft/webmagic

  1. StormCrawler
    实现语言: Java
    GitHub星标数:437
    官方支持链接

简介:

StormCrawler是一种基于Apache Storm构架分布式Web爬虫的开源SDK。
StormCrawler为开发人员构建爬虫提供了软件库和一系列资源。
StormCrawler完全适用于以数据流提供需获取和解析的URL的情况,也非常适用于大规模递归性爬取,尤其是需要低延迟的情况。
特性:

可扩展。
有弹性。
低延迟。
易于扩展。
运行良好且高效。
– 官方文档: http://stormcrawler.net/docs/api/

– 官方网站: http://stormcrawler.net/