Java爬虫技术框架之Heritrix框架详解


Posted in Python onJuly 22, 2020

Heritrix是一个由Java开发的开源Web爬虫系统,用来获取完整的、精确的站点内容的深度复制,

具有强大的可扩展性,运行开发者任意选择或扩展各个组件,实现特定的抓取逻辑。

一、Heritrix介绍

Heritrix采用了模块化的设计,用户可以在运行时选择要用的模块。它由核心类(core classes)和插件模块(pluggable modules)构成。

核心类可以配置,但不能被覆盖,插件模块可以由第三方模块取代。所以我们就可以用实现了特定抓取逻辑的第三方模块来取代默认的插件模块,从而满足自己的抓取需要。

CrawlController(下载控制器)整个下载过程的总控制者,整个抓取工作的起点,决定整个抓取任务的开始和结束。每个URI都有一个独立的线程,它从边界控制器(Frontier)获取新的URI,然后传递给Processor chains(处理链)经过一系列Processor(处理器)处理。

Java爬虫技术框架之Heritrix框架详解

二、Heritrix架构

中央控制器 CrawlController 是核心组件,决定了整个抓取任务的开始与结束。

用户在 Heritrix web UI 控制台设置抓取任务后,heritrix首先构造XMLSettingsHandler对象,然后调用CrawlController的构造函数,构造一个CrawlController实例并初始化,这样,CrawlController就具备了运行条件。

此时,只需调用 requestCrawlStart()方法就可以启动线程池和Frontier,以便向线程池中工作线程提供抓取用的URL链接。

Java爬虫技术框架之Heritrix框架详解

Heritrix 3.x 的框架主要分为 Engine 和 Component

三、一些API

org.archive.crawler.framework.CrawlJob;

org.archive.crawler.postprocessor.CandidatesProcessor;
org.archive.modules.CrawlURI;

等等

抓取任务CrawlOrder类:是整个抓取工作的起点。一次抓取任务包括许多属性,建立一个任务的方式有很多种,最简单的一种就是根据默认的order.xml来配置。

中央控制器CrawlController:该类决定着抓取任务的开始和结束。它包含以下几个组件:

CrawlOrder:该类保存了order.xml的属性配置;

CrawlScope:决定当前抓取范围;

ProcessorChainList:处理器链;

Frontier:一次抓取任务需要设定一个Frontier,以此来不断为其每个线程提供URI;

ToePool:它是一个线程池,管理了所有在当前任务中抓取过的Host名称和Server名称。

中央控制器CrawlControllr的类结构如图所示:

Java爬虫技术框架之Heritrix框架详解

Frontier链接制造工厂:它表示一种为线程提供链接的工具,通过一些特定的算法来决定哪个链接将接下来被送入处理器链中,同时,它本身也负责一定的日志和状态报告功能。

BdbFrontier类:它是用Berkeley DB 实现的,Berkeley DB 就是一个HashTable,它能够按“key/value”方式保存数据,能够为应用程序提供可伸缩的、高性能的、有事务保护功能的嵌入式数据库。

Heritrix的多线程ToeThread和ToePool:要想更快更有效地抓取网页,必须采用多线程,Heritrix则采用多线程机制,提供了一个标准的线程池ToePool,用于管理所有的抓取线程。

处理器链 Processor:包括PreProcessor、Fetcher、Extractor、Writer、PostProcessor五种。

四、应用

作为爬虫模块,爬取数据

Java爬虫技术框架之Heritrix框架详解

到此这篇关于爬虫技术框架之Heritrix框架详解的文章就介绍到这了,更多相关爬虫技术框架 Heritrix内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现从URL地址提取文件名的方法
May 15 Python
python编程使用selenium模拟登陆淘宝实例代码
Jan 25 Python
浅谈Python中重载isinstance继承关系的问题
May 04 Python
python 以16进制打印输出的方法
Jul 09 Python
Python判断以什么结尾以什么开头的实例
Oct 27 Python
使用Python实现文字转语音并生成wav文件的例子
Aug 08 Python
python实现扫雷游戏
Mar 03 Python
Python xlrd excel文件操作代码实例
Mar 10 Python
解决Python Matplotlib绘图数据点位置错乱问题
May 16 Python
浅析Python 条件控制语句
Jul 15 Python
Python破解极验滑动验证码详细步骤
May 21 Python
python-opencv 中值滤波{cv2.medianBlur(src, ksize)}的用法
Jun 05 Python
Python 绘制可视化折线图
Jul 22 #Python
python写文件时覆盖原来的实例方法
Jul 22 #Python
python中return不返回值的问题解析
Jul 22 #Python
Java byte数组操纵方式代码实例解析
Jul 22 #Python
Python生成器传参数及返回值原理解析
Jul 22 #Python
Python通过zookeeper实现分布式服务代码解析
Jul 22 #Python
Selenium python时间控件输入问题解决方案
Jul 22 #Python
You might like
php Undefined index和Undefined variable的解决方法
2008/03/27 PHP
php 表单数据的获取代码
2009/03/10 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
总结PHP中初始化空数组的最佳方法
2019/02/13 PHP
浅谈laravel aliases别名的原理
2019/10/24 PHP
javascript测试题练习代码
2012/10/10 Javascript
在Google 地图上实现做的标记相连接
2015/01/05 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
Bootstrap在线电子商务网站实战项目5
2016/10/14 Javascript
domReady的实现案例
2016/11/23 Javascript
妙用Angularjs实现表格按指定列排序
2017/06/23 Javascript
深入探究AngularJs之$scope对象(作用域)
2017/07/20 Javascript
Vue项目组件化工程开发实践方案
2018/01/09 Javascript
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
2019/05/08 Javascript
JS实现炫酷雪花飘落效果
2020/08/19 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
2020/10/24 Javascript
[33:33]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第二场 11.27
2020/11/30 DOTA
python将xml xsl文件生成html文件存储示例讲解
2013/12/03 Python
Python模仿POST提交HTTP数据及使用Cookie值的方法
2014/11/10 Python
用Python的Tornado框架结合memcached页面改善博客性能
2015/04/24 Python
python实现批量图片格式转换
2020/06/16 Python
Python多继承原理与用法示例
2018/08/23 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
Python Django2.0集成Celery4.1教程
2019/11/19 Python
英国领先的男装设计师服装购物网站:Mainline Menswear
2018/02/04 全球购物
铭万公司.net面试题笔试题
2014/07/20 面试题
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
数控技术专业毕业自荐书范文
2014/02/05 职场文书
《窗前的气球》教学反思
2014/04/07 职场文书
低碳生活倡议书
2014/04/14 职场文书
小学生2014国庆节演讲稿:祖国在我心中
2014/09/21 职场文书
搞笑的爱情检讨书
2014/10/01 职场文书
吴仁宝观后感
2015/06/09 职场文书
2020年元旦晚会策划书模板
2019/12/30 职场文书
vue Element-ui表格实现树形结构表格
2021/06/07 Vue.js
德生TECSUN S-2000使用手册文字版
2022/05/10 无线电