Java爬虫技术框架之Heritrix框架详解
Heritrix是一个由Java开发的开源Web爬虫系统,用来获取完整的、精确的站点内容的深度复制,
具有强大的可扩展性,运行开发者任意选择或扩展各个组件,实现特定的抓取逻辑。
一、Heritrix介绍
Heritrix采用了模块化的设计,用户可以在运行时选择要用的模块。它由核心类(core classes)和插件模块(pluggable modules)构成。
核心类可以配置,但不能被覆盖,插件模块可以由第三方模块取代。所以我们就可以用实现了特定抓取逻辑的第三方模块来取代默认的插件模块,从而满足自己的抓取需要。
CralController(下载控制器)整个下载过程的总控制者,整个抓取工作的起点,决定整个抓取任务的开始和结束。每个URI都有一个独立的线程,它从边界控制器(Frontier)获取新的URI,然后传递给Processor chains(处理链)经过一系列Processor(处理器)处理。
二、Heritrix架构
中央控制器 CralController 是核心组件,决定了整个抓取任务的开始与结束。
用户在 Heritrix eb UI 控制台设置抓取任务后,heritrix构造XMLSettingsHandler对象,然后调用CralController的构造函数,构造一个CralController实例并初始化,这样,CralController就具备了运行条件。
此时,只需调用 requestCralStart()方法就可以启动线程池和Frontier,以便向线程池中工作线程提供抓取用的URL链接。
Heritrix 3.x 的框架主要分为 Engine 和 Component
三、一些API
.archive.craler.frameork.CralJob;
.archive.craler.postprocessor.CandidatesProcessor;
.archive.modules.CralURI;
等等
抓取任务CralOrder类是整个抓取工作的起点。一次抓取任务包括许多属性,建立一个任务的方式有很多种,最简单的一种就是根据默认的order.xml来配置。
中央控制器CralController该类决定着抓取任务的开始和结束。它包含以下几个组件
CralOrder该类保存了order.xml的属性配置;
CralScope决定当前抓取范围;
ProcessorChainList处理器链;
Frontier一次抓取任务需要设定一个Frontier,以此来不断为其每个线程提供URI;
ToePool它是一个线程池,管理了所有在当前任务中抓取过的Host名称和Server名称。
中央控制器CralControllr的类结构如图所示
Frontier链接制造工厂它表示一种为线程提供链接的工具,通过一些特定的算法来决定哪个链接将接下来被送入处理器链中,,它本身也负责一定的日志和状态报告功能。
BdbFrontier类它是用Berkeley DB 实现的,Berkeley DB 就是一个HashTable,它能够按“key/value”方式保存数据,能够为应用程序提供可伸缩的、高性能的、有事务保护功能的嵌入式数据库。
Heritrix的多线程ToeThread和ToePool要想更快更有效地抓取网页,必须采用多线程,Heritrix则采用多线程机制,提供了一个标准的线程池ToePool,用于管理所有的抓取线程。
处理器链 Processor包括PreProcessor、Fetcher、Extractor、Writer、PostProcessor五种。
四、应用
作为爬虫模块,爬取数据
到此这篇关于爬虫技术框架之Heritrix框架详解的文章就介绍到这了,更多相关爬虫技术框架 Heritrix内容请搜索考高分网以前的文章或继续浏览下面的相关文章电脑维修网希望大家以后多多支持考高分网!
空调维修
- 我的世界电脑版运行身份怎么弄出来(我的世界
- 空调抽湿是什么意思,设置抽湿的温度有什么意
- 方太燃气灶有一个打不着火 怎么修复与排查方法
- 夏季免费清洗汽车空调的宣传口号
- 清洗完空调后出现漏水现象
- iphone6能玩什么游戏(iphone6游戏)
- 如何设置电脑密码锁屏(如何设置电脑密码锁屏
- win10删除开机密码提示不符合密码策略要求
- 电脑w7显示不是正版(w7不是正版怎么解决)
- 万家乐z8热水器显示e7解决 怎么修复与排查方法
- 1匹空调多少瓦数(1匹空调多少瓦)
- 安卓手机连接电脑用什么软件好(关于安卓手机
- 电脑网页看视频卡是什么原因(爱拍看视频卡)
- 华帝燃气灶点火器一直响然后熄火怎么办:问题
- 电脑壁纸怎么换(关于电脑壁纸怎么换的介绍)
- 冬天空调的出风口应该朝什么方向(冬天空调风