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时间戳与时间字符串互相转换实例代码
Nov 28 Python
从零学Python之入门(二)基本数据类型
May 25 Python
使用pdb模块调试Python程序实例
Jun 02 Python
在Linux下使用Python的matplotlib绘制数据图的教程
Jun 11 Python
Django中URL视图函数的一些高级概念介绍
Jul 20 Python
Python的Django REST框架中的序列化及请求和返回
Apr 11 Python
在python 不同时区之间的差值与转换方法
Jan 14 Python
Python帮你识破双11的套路
Nov 11 Python
Python zip函数打包元素实例解析
Dec 11 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
Apr 02 Python
Python如何在循环内使用list.remove()
Jun 01 Python
python怎么提高计算速度
Jun 11 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写入WRITE编码为UTF8的文件的实现代码
2008/07/07 PHP
php中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
PHP中的替代语法介绍
2015/01/09 PHP
编辑浪子版表单验证类
2007/05/12 Javascript
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
JavaScript中使用document.write向页面输出内容实例
2014/10/16 Javascript
原生JS实现响应式瀑布流布局
2015/04/02 Javascript
jQuery插件MixItUp实现动画过滤和排序
2015/04/12 Javascript
不能不知道的10个angularjs英文学习网站
2016/03/23 Javascript
原生js实现autocomplete插件
2016/04/14 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
jQuery插件MovingBoxes实现左右滑动中间放大图片效果
2017/02/28 Javascript
Vue组件化通讯的实例代码
2017/06/23 Javascript
详解jQuery中的easyui
2018/09/02 jQuery
React+TypeScript+webpack4多入口配置详解
2019/08/08 Javascript
vue+elementUI实现简单日历功能
2020/09/24 Javascript
[01:11]steam端dota2实名认证操作流程视频
2021/03/11 DOTA
[57:36]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第三场 2月1日
2021/03/11 DOTA
Python中运行并行任务技巧
2015/02/26 Python
用Python程序抓取网页的HTML信息的一个小实例
2015/05/02 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
Python爬虫常用库的安装及其环境配置
2018/09/19 Python
python for循环输入一个矩阵的实例
2018/11/14 Python
简单了解Pandas缺失值处理方法
2019/11/16 Python
np.random.seed() 的使用详解
2020/01/14 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
python exit出错原因整理
2020/08/31 Python
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
linux面试题参考答案(5)
2014/09/01 面试题
大学生毕业自我评价范文分享
2013/11/07 职场文书
大学生赌博检讨书
2014/09/22 职场文书
论文评审意见
2015/06/05 职场文书
医务人员岗前培训心得体会
2016/01/08 职场文书
《富饶的西沙群岛》教学反思
2016/02/16 职场文书