玩C一定用得到的19款Java开源Web爬虫

网络爬虫(又被称为网页蜘蛛,网络机器人,在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


作者:Optimus Prime

来源:51CTO

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257844.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一元二次方程

转载于:https://www.cnblogs.com/569114a/p/4179164.html

cookie html5,HTML5——存储(cookie、localStorage、sessionStorage)的区别

cookie本来用于客户端和服务端通信,但是因为它有本地存储的功能,于是被“借用”了。使用方法document.cookie 获取和修改即可缺点存储量太少,只有4kb所有http请求都带着,会影响获取资源的效率。API简单,需要封装才能使…

数据中心存在不当投资吗?

不正当的投资是一种危害:在一些项目建设中,投入大量的资金是错误的,因为这些项目的需求是不可持续的或高估的。那么数据中心属于这一类吗? 投资不当的问题 不当投资会与经济的繁荣与萧条齐头并进。例如,抑制按揭贷款利率可能会导…

问题:循环元素,被选中元素个数,全选

一段时间不写js都有点忘记了&#xff0c;这里看几个常见的js&#xff0c;涉及到循环&#xff0c;计算元素个数&#xff0c;checkbox选中等问题&#xff0c;首先是html元素 <div class"content border p05"><div><input type"checkbox" id&q…

LeetCodeOJ. String to Integer (atoi)

试题请參见: https://oj.leetcode.com/problems/string-to-integer-atoi/ 题目概述 Implement atoi to convert a string to an integer.Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the…

html如何设置滚动动画,JavaScript 实现页面滚动动画

在做前端 UI 效果时&#xff0c;让元素根据滚动位置实现动画效果是一个非常流行的设计&#xff0c;通常我们会使用第三方插件或库来实现。在本教程中&#xff0c;我将教大家使用纯 JavaScript 和 CSS 来实现。先预览一下实现的效果&#xff1a;我们使用 CSS 来实现动画&#xf…

oraclenbsp;一个稍微大点数据库

公司有个水电收费系统,在包头试运行, 给了我一个dmp让熟悉一下业务. dmp是压缩过的.80多兆好像.解压下300多兆好像.导入, 有几个表是50万行的,几个30万左右,200多个表(没数).很多表是0行,设计居民用户单位用户一堆一堆的.用户有几万个. 问题是这样的: 收费系统每个月要结算一个…

绝非玩笑!人工智能或开创黑客新时代

专家称&#xff0c;未来的网络战争可能是机器对机器&#xff0c;这可能需要几年甚至几十年时间&#xff0c;但黑客并不一定总是人类。人工智能(AI)是可彻底改变网络安全的技术&#xff0c;而它有一天可能成为最终的攻击工具。 今年8月由美国国防部先进项目研究局(DARPA)赞助的C…

redis 笔记06 发布与订阅、事务、慢查询日志、监视器

发布与订阅 1. 服务器状态在pubsub_channels字典保存了所有频道的订阅关系&#xff1a;SUBSCRIBE命令负责将客户端和被订阅的频道关联到这个字典里面&#xff0c;而UNSUBSCRIBE命令则负责 解除客户端和被退订频道之间的关联。 2. 服务器状态在pubsub_patterns链表保存了所有模式…

html中文段落,HTML 段落-JavaScript中文网-JavaScript教程资源分享门户

HTML 可以将文档分割为若干段落。HTML 段落段落是通过 标签定义的。实例这是一个段落 这是另一个段落尝试一下 注意&#xff1a;浏览器会自动地在段落的前后添加空行。( 是块级元素)不要忘记结束标签即使忘了使用结束标签&#xff0c;大多数浏览器也会正确地将 HTML 显示出来&a…

自学python系列14:映像,集合类型-集合类型

集合类型1.1如何创建集合类型和给集合赋值1.1.1 如何创建集合类型和给集合赋值集合的工厂方法set()和frozenset()>>> sset(abc)>>> sset([a, c, b])>>> tfrozenset(abc)>>> tfrozenset([a, c, b])len()计算的是集合的字母的个数1.1.2如何访…

观点:我们为什么需要威胁情报?

最近被谈论的异常火热的一个术语就是威胁情报&#xff0c;那么威胁情报到底是什么意思&#xff0c;它是一种什么概念或者机制呢?本文中我们就来亲密接触一下威胁情报&#xff0c;并了解它所具有的功能&#xff0c;然后给出几个威胁情报的最佳实践示例&#xff0c;最后分析威胁…

vijos 1942 [AH 2005] 小岛

描述 西伯利亚北部的寒地&#xff0c;坐落着由 N 个小岛组成的岛屿群&#xff0c;我们把这些小岛依次编号为 1 到 N 。 起初&#xff0c;岛屿之间没有任何的航线。后来随着交通的发展&#xff0c;逐渐出现了一些连通两座小岛的航线。例如增加一条在 u 号小岛与 v 号小岛之间的航…

聊城大学计算机应用基础函授,聊城大学试题计算机应用基础试题

姓名 年级专业层次 教学单位密封线 第1页 共3页聊城大学《计算机应用基础》函授试题一、判断题(共10题&#xff0c;每题2分&#xff0c;共20分)1、信息按状态划分可以划分为动态信息和静态信息。( √ )2、操作系统不具有通用性。( )3、在Windows XP环境中&#xff0c;整个显示…

Struts2中 Path (getContextPath与basePath)

struts2中的路径问题是根据action的路径而不是jsp路径来确定&#xff0c;所以尽量不要使用相对路径。 虽然可以用redirect方式解决&#xff0c;但redirect方式并非必要。解决办法非常简单&#xff0c;统一使用绝对路径。&#xff08;在jsp中用request.getContextpath方式来拿到…

(七)SpringBoot+SpringCloud —— 集成断路器

2019独角兽企业重金招聘Python工程师标准>>> 断路器简介 在一个项目中&#xff0c;系统可能被拆分成多个服务&#xff0c;例如用户、订单和库存等。 这里存在这服务调用服务的情况&#xff0c;例如&#xff0c;客户端调用订单服务&#xff0c;订单服务又调用库存服务…

Java反射机制的使用方法

Java的反射机制同意你在程序执行的过程中获取类定义的细节。有时候在程序执行的时候才得知要调用哪个方法&#xff0c;这时候反射机制就派上用场了。获取类 类的获取方法有下面几种&#xff1a;forName()。通过Class.forName()获取与字符串向相应的类。比方\lstinline{Class.fo…

银行计算机设备日常检查表,[计算机]201154安全检查表.doc

[计算机]201154安全检查表土建基础框架施工检查表编号&#xff1a;2011-03-01-11工程名称铸造车间检查时间2011 年 月 日检查部位基础施工检 查 人检 查结 论百分制折合分数&#xff1a;需要整改共 条。受检单位河南周口受检责任人检 查 内 容检查项目检查内容和安全文明施工要…

我为什么要写FansUnion个人官网-BriefCMS-电子商务malling等系统

不少朋友一直关注我最近几个月&#xff0c;已经做的和正在做的项目&#xff0c;比如个人官网、BriefCMS、电子上午malling等系统。但是呢&#xff0c;部分朋友比较好奇&#xff0c;为啥要去写。他们比较疑惑的是&#xff0c;市面上已经有很多类似的系统了&#xff0c;甚至有部分…

Node开发文件上传系统及向七牛云存储和亚马逊AWS S3的文件上传

背景起&#xff0c;有奏乐&#xff1a; 有伟人曰&#xff1a;学习技能的最好途径莫过于理论与实践相结合。 初学Node这货时&#xff0c;每每读教程必会Fall asleep。 当真要开发系统时&#xff0c;顿觉精神百倍&#xff0c;即便踩坑无数也不失斗志。 因为同团队的小伙伴们都在辛…