Heritrix3.x自定义扩展Extractor
一、引言:
Heritrix3.x与Heritrix1.x版本差异比较大,全新配置模式的引入+扩展接口的变化,同时由于说明文档的匮乏,给Heritrix的开发者带来困惑,前面的文章已经就Heritrix的配置部署和运行做了说明,本文就Heritrix3.x版本就Extractor扩展做出实例说明。
二、配置说明
Heritrix3.x的WebUI发生了变化,不在是原来那种WebUI选择模式,而是变成了在线配置文件直接编辑模式。在这里自定义的Extractor要想加入Heritrix运行,首先需要修改配置文件,降自定义扩展的Extractor加入到Heritrix的Processor队列。完整配置文件如下所示:
2.1 配置文件
<!-- FETCH CHAIN -->
<!-- processors declared as named beans -->
<bean id="preselector" class="org.archive.crawler.prefetch.Preselector">
</bean>
<bean id="preconditions" class="org.archive.crawler.prefetch.PreconditionEnforcer">
</bean>
<bean id="fetchDns" class="org.archive.modules.fetcher.FetchDNS">
</bean>
<bean id="fetchHttp" class="org.archive.modules.fetcher.FetchHTTP">
</bean>
<bean id="extractorHttp" class="org.archive.modules.extractor.ExtractorHTTP">
</bean>
-------------------------------自定义Extractor------------------------------------
<bean id="SohuNewsExtractor" class="my.SohuNewsExtractor">
</bean>
---------------------------------------------------------------------------------
<bean id="extractorHtml" class="org.archive.modules.extractor.ExtractorHTML">
</bean>
<bean id="extractorCss" class="org.archive.modules.extractor.ExtractorCSS">
</bean>
<bean id="extractorJs" class="org.archive.modules.extractor.ExtractorJS">
</bean>
<bean id="extractorSwf" class="org.archive.modules.extractor.ExtractorSWF">
</bean>
<!-- assembled into ordered FetchChain bean -->
<bean id="fetchProcessors" class="org.archive.modules.FetchChain">
<property name="processors">
<list>
<!-- recheck scope, if so enabled... -->
<ref bean="preselector"/>
<!-- ...then verify or trigger prerequisite URIs fetched, allow crawling... -->
<ref bean="preconditions"/>
<!-- ...fetch if DNS URI... -->
<ref bean="fetchDns"/>
<!-- ...fetch if HTTP URI... -->
<ref bean="fetchHttp"/>
<!-- ...extract oulinks from HTTP headers... -->
<ref bean="extractorHttp"/> ----------------------------自定义Extractor----------------------------------------------
<!-- ...extract oulinks from HTTP content... -->
<ref bean="SohuNewsExtractor"/>
---------------------------------------------------------------------------------------
<!-- ...extract oulinks from HTML content... -->
<ref bean="extractorHtml"/>
<!-- ...extract oulinks from CSS content... -->
<ref bean="extractorCss"/>
<!-- ...extract oulinks from Javascript content... -->
<ref bean="extractorJs"/>
<!-- ...extract oulinks from Flash content... -->
<ref bean="extractorSwf"/>
</list>
</property>
</bean>
2.2 添加Bean和配置调度列表
<bean id="extractorHttp" class="org.archive.modules.extractor.ExtractorHTTP">
</bean>
-------------------------------自定义Extractor------------------------------------
<bean id="SohuNewsExtractor" class="my.SohuNewsExtractor">
</bean>
---------------------------------------------------------------------------------
...
----------------------------自定义Extractor---------------------------------------
<!-- ...extract oulinks from HTTP content... -->
<ref bean="SohuNewsExtractor"/>
---------------------------------------------------------------------------------
配置完成以上部分,既可以实现自定义Extractor参与Processor任务处理的调度。
三、程序说明
3.1 Extractor基类
Extractor基类发生了变化,新增了新的接口方法:
@Override
protected boolean shouldProcess(CrawlURI uri) {
// TODO Auto-generated method stub
return false;
}
如果不实现此方法,自定义扩展的Extractor的函数void extract(CrawlURI uri)将不会被调度。
3.2 构造函数
1.x版本的构造函数如下:
public Extractor(String name, String description) {
super(name, description);
// TODO Auto-generated constructor stub
}
3.x版本的构造函数取消了参数,采用的默认构造函数。
四、遗留问题
protected void extract(CrawlURI curi)
{
//1. 做哪些处理?
//2. 如何控制后续的下载行为,要求只下载自己想要的内容
}
Heritrix3.x自定义扩展Extractor的更多相关文章
- SharePoint 2013 自定义扩展菜单
在对SharePoint进行开发或者功能扩展的时候,经常需要对一些默认的菜单进行扩展,以使我们开发的东西更适合SharePoint本身的样式.SharePoint的各种功能菜单,像网站设置.Ribbo ...
- SharePoint 2013 自定义扩展菜单(二)
接博文<SharePoint 2013 自定义扩展菜单>,多加了几个例子,方便大家理解. 例七 列表设置菜单扩展(listedit.aspx) 扩展效果 XML描述 <CustomA ...
- WCF自定义扩展,以实现aop!
引用地址:https://msdn.microsoft.com/zh-cn/magazine/cc163302.aspx 使用自定义行为扩展 WCF Aaron Skonnard 代码下载位置: S ...
- Jquery自定义扩展方法(二)--HTML日历控件
一.概述 研究了上节的Jquery自定义扩展方法,自己一直想做用jquery写一个小的插件,工作中也用到了用JQuery的日历插件,自己琢磨着去造个轮子--HTML5手机网页日历控件,废话不多说,先看 ...
- Silverlight实例教程 - 自定义扩展Validation类,验证框架的总结和建议(转载)
Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...
- jQuery 自定义扩展,与$冲突处理
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- SparkContext自定义扩展textFiles,支持从多个目录中输入文本文件
需求 SparkContext自定义扩展textFiles,支持从多个目录中输入文本文件 扩展 class SparkContext(pyspark.SparkContext): def ...
- 基于 HtmlHelper 的自定义扩展Container
基于 HtmlHelper 的自定义扩展Container Intro 基于 asp.net mvc 的权限控制系统的一部分,适用于对UI层数据呈现的控制,基于 HtmlHelper 的扩展组件 Co ...
- 第十三节:HttpHander扩展及应用(自定义扩展名、图片防盗链)
一. 自定义扩展名 1. 前言 凡是实现了IHttpHandler接口的类均为Handler类,HttpHandler是一个HTTP请求的真正处理中心,在HttpHandler容器中,ASP.NET ...
随机推荐
- SQL Server 调优系列进阶篇 - 深入剖析统计信息
前言 经过前几篇的分析,其实大体已经初窥到SQL Server统计信息的重要性了,所以本篇就要祭出这个神器了. 该篇内容会很长,坐好板凳,瓜子零食之类... 不废话,进正题 技术准备 数据库版本为SQ ...
- 基于GUI的简单聊天室01
运用了Socket编程,gui,流的读入和写出,线程控制等 思路: 1.首先是在客户端中先建立好聊天的GUI 2.建立服务器端,设置好端口号(用SocketServer),其中需要两个boolean变 ...
- 使用MyEclipse设置所需配置的iOS应用
MyEclipse个人授权 折扣低至冰点!立即开抢>> [MyEclipse最新版下载] 一.iOS应用程序配置要求 这个进程需要四个需求数据文件: 证书签名请求(CSR)文件 证书签名请 ...
- hibernate一对一关联
hibernate一对一主键关联 一对一主键关联指的是两个表通过主键形成的一对一映射. 数据表要求:A表的主键也是B表的主键同时B表的主键也是A表的外键 sql: create table peopl ...
- xampp for mac 本地服务器的使用
1.下载xampp安装包 ,百度搜索下载合适版本安装包 2. 安装.下一步 ...->完成 3. 打开看到xampp启动页面. 打开你安装的路径:我这里的路径是:C:\xampp: 找见xamp ...
- Python读取ini配置文件的方式
python configparser模块 ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section ...
- php 给对象动态增加属性 及子类继承父类的构造方法
<?php error_reporting(-1); ini_set('display_errors','on'); class A { public $a = 'hello'; public ...
- Android RIL结构分析与移植
介绍 本文档对Android RIL部分的内容进行了介绍,其重点放在了Android RIL的原生代码部分. 包括四个主题: 1.Android RIL框架介绍 2.Android RIL与 Wind ...
- Ubuntu下安装virtualbox失败解决方案
安装失败的截图: 因此使用常规方法:对依赖的两个包进行获取安装,依旧失败: 因此解决方法为在官网上下载相对应版本的virtualbox软件:下载地址为:https://www.virtualbox.o ...
- 用js取1-100的随机数
function sum (m,n){ var num = Math.floor(Math.random()*(m - n) + n); alert(num) } sum(1,100): 万能 公式, ...