玩大数据一定用得到的 19 款 Java 开源 Web 爬虫
Java程序设计语言
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
今天将为大家介绍19款Java开源Web爬虫,需要的小伙伴们赶快收藏吧。
一、Heritrix
Heritrix 是一个由 java 开发的、开源的网络爬虫,用户可以使用它来从网上抓取想要的资源。其最出色之处在于它良好的可扩展性,方便用户实现自己的抓取逻辑。
Heritrix 是个“Archival Crawler”——来获取完整的、精确的、站点内容的深度复制。包括获取图像以及其他非文本内容。抓取并存储相关的内容。对内容来者不拒,不对页面进行内容上的修改。重新爬行对相同的URL不针对先前的进行替换。爬虫主要通过Web用户界面启动、监控和调整,允许弹性的定义要获取的url。
Heritrix是按多线程方式抓取的爬虫,主线程把任务分配给Teo线程(处理线程),每个Teo线程每次处理一个URL。Teo线程对每个URL执行一遍URL处理器链。URL处理器链包括如下5个处理步骤。
(1)预取链:主要是做一些准备工作,例如,对处理进行延迟和重新处理,否决随后的操作。
(2)提取链:主要是下载网页,进行DNS转换,填写请求和响应表单。
(3)抽取链:当提取完成时,抽取感兴趣的HTML和JavaScript,通常那里有新的要抓取的URL。
(4)写链:存储抓取结果,可以在这一步直接做全文索引。Heritrix提供了用ARC格式保存下载结果的ARCWriterProcessor实现。
(5)提交链:做和此URL相关操作的最后处理。检查哪些新提取出的URL在抓取范围内,然后把这些URL提交给Frontier。另外还会更新DNS缓存信息。
Heritrix系统框架图
heritrix处理一个url的流程
二、WebSPHINX
WebSPHINX 是一个 Java 类包和 Web 爬虫的交互式开发环境。 Web 爬虫 ( 也叫作机器人或蜘蛛 ) 是可以自动浏览与处理 Web 页面的程序。 WebSPHINX 由两部分组成:爬虫工作平台和 WebSPHINX 类包。
WebSPHINX 是一个 Java 类包和 Web 爬虫的交互式开发环境。 Web 爬虫 ( 也叫作机器人或蜘蛛 ) 是可以自动浏览与处理 Web 页面的程序。 WebSPHINX 由两部分组成:爬虫工作平台和 WebSPHINX 类包。
WebSPHINX – 用途
1.可视化显示页面的集合
2.下载页面到本地磁盘用于离线浏览
3.将所有页面拼接成单个页面用于浏览或者打印
4.按照特定的规则从页面中抽取文本字符串
5.用Java或Javascript开发自定义的爬虫
详细介绍可见>>>
三、WebLech
WebLech是一个功能强大的Web站点下载与镜像工具。它支持按功能需求来下载web站点并能够尽可能模仿标准Web浏览器的行为。WebLech有一个功能控制台并采用多线程操作。
WebLech是一个功能强大的Web站点下载与镜像免费开源工具。它支持按功能需求来下载web站点并能够尽可能模仿标准Web浏览器的行为。WebLech有一个功能控制台并采用多线程操作。
这款爬虫足够简单,如果初学如果编写爬虫,可做入门参考。所以我选择了用这个爬虫开始我的研究。如果只是做要求不高的应用,也可试试。如果想找一款功能强大,就别在WebLech上浪费时间了。
该项目主页: http://weblech.sourceforge.net/
特点:
1)开源,免费
2)代码是用纯Java写的,可以在任何支持Java的平台上也行
3)支持多线程下载网页
4)可维持网页间的链接信息
5)可配置性强: 深度优先或宽度优先爬行网页 可定制URL过滤器,这样就可以按需要爬行单个web服务器,单个目录或爬行整 个WWW网络 可设置URL的优先级,这样就可以优先爬行我们感兴趣或重要的网页 可记录断点时程序的状态,一边重新启动时可接着上次继续爬行。
四、Arale
Arale主要为个人使用而设计,而没有像其它爬虫一样是关注于页面索引。Arale能够下载整个web站点或来自web站点的某些资源。Arale还能够把动态页面映射成静态页面。
五、JSpider
JSpider:是一个完全可配置和定制的Web Spider引擎.你可以利用它来检查网站的错误(内在的服务器错误等),网站内外部链接检查,分析网站的结构(可创建一个网站地图),下载整个Web站点,你还可以写一个JSpider插件来扩展你所需要的功能。
Spider是一个用Java实现的WebSpider,JSpider的执行格式如下:
jspider [URL] [ConfigName]
URL一定要加上协议名称,如:http://,否则会报错。如果省掉ConfigName,则采用默认配置。
JSpider 的行为是由配置文件具体配置的,比如采用什么插件,结果存储方式等等都在conf[ConfigName]目录下设置。JSpider默认的配置种类 很少,用途也不大。但是JSpider非常容易扩展,可以利用它开发强大的网页抓取与数据分析工具。要做到这些,需要对JSpider的原理有深入的了 解,然后根据自己的需求开发插件,撰写配置文件。
Spider是:
一个高度可配置和和可定制Web爬虫
LGPL开源许可下开发
100%纯Java实现
您可以使用它来:
检查您网站的错误(内部服务器错误, …)
传出或内部链接检查
分析你网站的结构(创建一个sitemap, …)
下载整修网站
通过编写JSpider插件实现任何功能.
该项目主页: http://j-spider.sourceforge.net/
六、spindle
spindle是一个构建在Lucene工具包之上的Web索引/搜索工具.它包括一个用于创建索引的HTTP spider和一个用于搜索这些索引的搜索类。spindle项目提供了一组JSP标签库使得那些基于JSP的站点不需要开发任何Java类就能够增加搜索功能。
七、Arachnid
Arachnid是一个基于Java的web spider框架.它包含一个简单的HTML剖析器能够分析包含HTML内容的输入流.通过实现Arachnid的子类就能够开发一个简单的Web spiders并能够在Web站上的每个页面被解析之后增加几行代码调用。 Arachnid的下载包中包含两个spider应用程序例子用于演示如何使用该框架。
该项目主页: http://arachnid.sourceforge.net/
八、LARM
LARM能够为Jakarta Lucene搜索引擎框架的用户提供一个纯Java的搜索解决方案。它包含能够为文件,数据库表格建立索引的方法和为Web站点建索引的爬虫。
该项目主页: http://larm.sourceforge.net/
九、JoBo
JoBo是一个用于下载整个Web站点的简单工具。它本质是一个Web Spider。与其它下载工具相比较它的主要优势是能够自动填充form(如:自动登录)和使用cookies来处理session。JoBo还有灵活的下载规则(如:通过网页的URL,大小,MIME类型等)来限制下载。
十、snoics-reptile
1、snoics-reptile是什么?
是用纯Java开发的,用来进行网站镜像抓取的工具,可以使用配制文件中提供的URL入口,把这个网站所有的能用浏览器通过GET的方式获取到的资源全部抓取到本地,包括网页和各种类型的文件,如:图片、flash、mp3、zip、rar、exe等文件。可以将整个网站完整地下传至硬盘内,并能保持原有的网站结构精确不变。只需要把抓取下来的网站放到web服务器(如:Apache)中,就可以实现完整的网站镜像。
2、现在已经有了其他的类似的软件,为什么还要开发snoics-reptile?
因为有些在抓取的过程中经常会出现错误的文件,而且对很多使用javascript控制的URL没有办法正确的解析,而snoics-reptile通过对外提供接口和配置文件的形式,对特殊的URL,可以通过自由的扩展对外提供的接口,并通过配置文件注入的方式,基本上能实现对所有的网页都正确的解析和抓取。
该项目主页: http://www.blogjava.net/snoics
十一、Web-Harvest
Web-Harvest是一个Java开源Web数据抽取工具。它能够收集指定的Web页面并从这些页面中提取有用的数据。Web-Harvest主要是运用了像XSLT,XQuery,正则表达式等这些技术来实现对text/xml的操作。
Web-Harvest 是一个用Java 写的开源的Web 数据提取工具。它提供了一种从所需的页面上提取有用数据的方法。为了达到这个目的,你可能需要用到如XSLT,XQuery,和正则表达式等操作text/xml 的相关技术。Web-Harvest 主要着眼于目前仍占大多数的基于HMLT/XML 的页面内容。另一方面,它也能通过写自己的Java 方法来轻易扩展其提取能力。
Web-Harvest 的主要目的是加强现有数据提取技术的应用。它的目标不是创造一种新方法,而是提供一种更好地使用和组合现有方法的方式。它提供了一个处理器集用于处理数据和控制流程,每一个处理器被看作是一个函数,它拥有参数和执行后同样有结果返回。而且处理是被组合成一个管道的形式,这样使得它们可以以链式的形式来执行,此外为了更易于数据操作和重用,Web-Harvest 还提供了变量上下方用于存储已经声明的变量。
web-harvest 启动,可以直接双击jar包运行,不过该方法不能指定web-harvest java虚拟机的大小。第二种方法,在cmd下切到web-harvest的目录下,敲入命令“java -jar -Xms400m webharvest_all_2.jar” 即可启动并设置起java虚拟机大小为400M。
该项目主页 :http://web-harvest.sourceforge.net
十二、ItSucks
ItSucks是一个Java Web爬虫开源项目。可灵活定制,支持通过下载模板和正则表达式来定义下载规则。提供一个控制台和Swing GUI操作界面。
功能特性:
多线程
正则表达式
保存/载入的下载工作
在线帮助
HTTP/HTTPS 支持
HTTP 代理 支持
HTTP身份验证
Cookie 支持
可配置的User Agent
连接限制
配置HTTP响应代码的行为
带宽限制
Gzip压缩
该项目主页 :http://itsucks.sourceforge.net/
十三、Smart and Simple Web Crawler
Smart and Simple Web Crawler是一个Web爬虫框架。集成Lucene支持。该爬虫可以从单个链接或一个链接数组开始,提供两种遍历模式:最大迭代和最大深度。可以设置 过滤器限制爬回来的链接,默认提供三个过滤器ServerFilter、BeginningPathFilter和 RegularExpressionFilter,这三个过滤器可用AND、OR和NOT联合。在解析过程或页面加载前后都可以加监听器。
十四、Crawler4j
crawler4j是Java实现的开源网络爬虫。提供了简单易用的接口,可以在几分钟内创建一个多线程网络爬虫。
crawler4j的使用主要分为两个步骤:
实现一个继承自WebCrawler的爬虫类;
通过CrawlController调用实现的爬虫类。
WebCrawler是一个抽象类,继承它必须实现两个方法:shouldVisit和visit。其中:
shouldVisit是判断当前的URL是否已经应该被爬取(访问);
visit则是爬取该URL所指向的页面的数据,其传入的参数即是对该web页面全部数据的封装对象Page。
另外,WebCrawler还有其它一些方法可供覆盖,其方法的命名规则类似于Android的命名规则。如getMyLocalData方法可以返回WebCrawler中的数据;onBeforeExit方法会在该WebCrawler运行结束前被调用,可以执行一些资源释放之类的工作。
许可
Copyright (c) 2010-2015 Yasser Ganjisaffar
根据 Apache License 2.0 发布
开源地址: https://github.com/yasserg/crawler4j
十五、Ex-Crawler
Ex-Crawler 是一个网页爬虫,采用 Java 开发,该项目分成两部分,一个是守护进程,另外一个是灵活可配置的 Web 爬虫。使用数据库存储网页信息。
Ex-Crawler分成三部分(Crawler Daemon,Gui Client和Web搜索引擎),这三部分组合起来将成为一个灵活和强大的爬虫和搜索引擎。其中Web搜索引擎部分采用PHP开发,并包含一个内容管理系统CMS用于维护搜索引擎。
该项目主页 :http://ex-crawler.sourceforge.net/joomla/
十六、Crawler
Crawler是一个简单的Web爬虫。它让你不用编写枯燥,容易出错的代码,而只专注于所需要抓取网站的结构。此外它还非常易于使用。
该项目主页: http://projetos.vidageek.net/crawler/crawler/
十七、Encog
Encog是一个高级神经网络和机器人/爬虫开发类库。Encog提供的这两种功能可以单独分开使用来创建神经网络或HTTP机器人程序,同时Encog还支持将这两种高级功能联合起来使用。Encog支持创建前馈神经网络、Hopfield神经网络、自组织图。
Encog提供高级HTTP机器人/爬虫编程功能。支持将多线程爬虫产生的内容存在内存或数据库中。支持HTM解析和高级表单与 Cookie 处理。
Encog 是一种先进的机器学习框架,它支持多种先进的算法,以及支持类正常化和处理数据。机器学习算法,如支持向量机,人工神经网络,遗传编程,贝叶斯网络,隐马尔可夫模型,遗传编程和遗传算法的支持。大多数Encog培训algoritms是多线程的,很好地扩展到多核硬件。Encog还可以使用一个GPU,以进一步加快处理时间。一个基于GUI的工作台也提供帮助模型和火车机器学习算法。自2008年以来Encog一直在积极发展.
Encog 支持多种语言,包括C# Java 和C
在GitHub上有各种语言版本的源代码.
http://www.heatonresearch.com/encog
https://github.com/encog
十八、Crawljax
Crawljax是一个开源Java工具用于Ajax Web应用程序的自动化抓取和测试。Crawljax能够抓取/爬行任何基于Ajax的Web应用程序通过触发事件和在表单中填充数据。
收录时间:2011-05-18 09:50:32
该项目主页 :http://crawljax.com/
开源地址: https://github.com/crawljax/crawljax
以上就是玩大数据一定用得到的 19 款 Java 开源 Web 爬虫的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Panduan Nombor Sempurna di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor Perfect dalam Java?, contoh dengan pelaksanaan kod.

Panduan untuk Weka di Jawa. Di sini kita membincangkan Pengenalan, cara menggunakan weka java, jenis platform, dan kelebihan dengan contoh.

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

Panduan untuk TimeStamp to Date di Java. Di sini kita juga membincangkan pengenalan dan cara menukar cap waktu kepada tarikh dalam java bersama-sama dengan contoh.

Kapsul adalah angka geometri tiga dimensi, terdiri daripada silinder dan hemisfera di kedua-dua hujungnya. Jumlah kapsul boleh dikira dengan menambahkan isipadu silinder dan jumlah hemisfera di kedua -dua hujungnya. Tutorial ini akan membincangkan cara mengira jumlah kapsul yang diberikan dalam Java menggunakan kaedah yang berbeza. Formula volum kapsul Formula untuk jumlah kapsul adalah seperti berikut: Kelantangan kapsul = isipadu isipadu silinder Dua jumlah hemisfera dalam, R: Radius hemisfera. H: Ketinggian silinder (tidak termasuk hemisfera). Contoh 1 masukkan Jejari = 5 unit Ketinggian = 10 unit Output Jilid = 1570.8 Unit padu menjelaskan Kirakan kelantangan menggunakan formula: Kelantangan = π × r2 × h (4

Java ialah bahasa pengaturcaraan popular yang boleh dipelajari oleh pembangun pemula dan berpengalaman. Tutorial ini bermula dengan konsep asas dan diteruskan melalui topik lanjutan. Selepas memasang Kit Pembangunan Java, anda boleh berlatih pengaturcaraan dengan mencipta program "Hello, World!" Selepas anda memahami kod, gunakan gesaan arahan untuk menyusun dan menjalankan program, dan "Hello, World!" Pembelajaran Java memulakan perjalanan pengaturcaraan anda, dan apabila penguasaan anda semakin mendalam, anda boleh mencipta aplikasi yang lebih kompleks.
