[转]Heritrix之旅之CrawlController

 

文章来源http://www.cnblogs.com/MichaelYin/archive/2011/08/25/2153633.html

一转眼暑假就快要结束了,暑假也是在趁着找工作之前花时间折研究了一下Heritrix,这段时间会花点时间把这块学习和心得来做一个总结,一方面对知识的夯实,另一方面也能对园子里面的朋友有所帮助。

Heritrix的一些介绍网上都有,我在这里也就不做介绍了,直接进入正题。

Heritrix抓取任务的核心类就是CrawlController,这个对象将决定一个抓取任务的开始和结束

00//order.xml文件的封装
01private transient CrawlOrder order;
02//
03private transient CrawlScope scope;
04//处理链列表
05private transient ProcessorChainList processorChains;
06//为抓取线程提供uri
07private transient Frontier frontier;
08 
09//线程池
10private transient ToePool toePool;
11 
12//缓存,保存了当前抓取任务抓取过的Host名称和Server名称
13private transient ServerCache serverCache;
14 
15// This gets passed into the initialize method.
16 
17private transient SettingsHandler settingsHandler;

crawler_overview1

上面这个图就是CrawlController和抓取过程中的几个关键的组件的关系图,CrawlController包含了这几个组件并对整个抓取进行管理

CrawlController的初始化是在initialize方法中完成的,根据传入的SettingsHandler得到抓取必须的参数,进行初始化,然后完成其他的一些必须的初始化工作。

二次开发的时候我们也可以自己完成这些过程,但是有几个必须的过程是必须要走的,首先就是需要构造一个XMLSettingsHandler对象,将order.xml信息装入,然后构造一个CrawlController对象,然后将XMLSettingsHandler放入到CrawlController的initialize方法中去,当完成上述工作之后,CrawlController就可以准备开始进行抓取了。

其实上述所说的过程就是Heritrix类中doOneCrawl方法的实现的过程,我们可以直接将order.xml的文件路径放入方法然后进行抓取

0XMLSettingsHandler handler = new XMLSettingsHandler(new File(
1crawlOrderFile));
2handler.initialize();
3CrawlController controller = new CrawlController();
4controller.initialize(handler);
5if (listener != null) {
6controller.addCrawlStatusListener(listener);
7}
8controller.requestCrawlStart();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值