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 相关文章推荐
Tornado服务器中绑定域名、虚拟主机的方法
Aug 22 Python
Python编程中的异常处理教程
Aug 21 Python
关于Python中空格字符串处理的技巧总结
Aug 10 Python
python 自动去除空行的实例
Jul 24 Python
Python高级特性切片(Slice)操作详解
Sep 27 Python
pandas DataFrame 行列索引及值的获取的方法
Jul 02 Python
python自动化实现登录获取图片验证码功能
Nov 20 Python
pymysql 插入数据 转义处理方式
Mar 02 Python
在django admin详情表单显示中添加自定义控件的实现
Mar 11 Python
Keras在训练期间可视化训练误差和测试误差实例
Jun 16 Python
Python configparser模块应用过程解析
Aug 14 Python
python微信智能AI机器人实现多种支付方式
Apr 12 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
人尽可用的Windows技巧小贴士之下篇
2007/03/22 PHP
php面向对象全攻略 (十七) 自动加载类
2009/09/30 PHP
PHP在网页中动态生成PDF文件详细教程
2014/07/05 PHP
PHP中Laravel 关联查询返回错误id的解决方法
2017/04/01 PHP
PHP中Session ID的实现原理实例分析
2019/08/17 PHP
Laravel登录失败次数限制的实现方法
2020/08/26 PHP
一种JavaScript的设计模式
2006/11/22 Javascript
JQuery中关于jquery.js与jquery.min.js的比较探讨
2013/05/15 Javascript
常见的原始JS选择器使用方法总结
2014/04/09 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
2015/03/31 Javascript
Bootstrap学习笔记之css组件(3)
2016/06/07 Javascript
js实现上传文件添加和删除文件选择框
2016/10/24 Javascript
AngularJS实现的base64编码与解码功能示例
2018/05/17 Javascript
vue+springboot实现项目的CORS跨域请求
2018/09/05 Javascript
浅析JavaScript异步代码优化
2019/03/18 Javascript
javascript实现5秒倒计时并跳转功能
2019/06/20 Javascript
[01:02:06]LGD vs Mineski Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
基于Python实现文件大小输出
2016/01/11 Python
Python 对象中的数据类型
2017/05/13 Python
python爬虫入门教程--正则表达式完全指南(五)
2017/05/25 Python
python实现的正则表达式功能入门教程【经典】
2017/06/05 Python
Python获取本机所有网卡ip,掩码和广播地址实例代码
2018/01/22 Python
Django如何自定义分页
2018/09/25 Python
Django项目之Elasticsearch搜索引擎的实例
2019/08/21 Python
python中下标和切片的使用方法解析
2019/08/27 Python
python 矢量数据转栅格数据代码实例
2019/09/30 Python
DJI大疆无人机官方商城:全球领先的无人飞行器研发和生产商
2016/12/21 全球购物
美国儿童运动鞋和服装零售商:Kids Foot Locker
2017/08/05 全球购物
香港万宁官方海外旗舰店:香港健与美连锁店
2018/09/27 全球购物
英国设计师泳装、沙滩装和比基尼在线精品店:Beach Cafe
2019/08/28 全球购物
澳大利亚窗帘商店:Curtain Wonderland
2019/12/01 全球购物
毕业横幅标语
2014/10/08 职场文书
分居协议书范本
2014/11/03 职场文书
督导岗位职责
2015/02/04 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书