深入学习Heritrix---解析处理器(Processor)

 
本节解析与处理器有关的内容.

与处理器有关的主要在以下几个类:Processor(处理器类),ProcessorChain(处理器类),ProcessorChainList(处理器链列表).它们之间的关系如下:

下面将解析该图.

(1)Processor

代表一个处理器.

Code

 

(2)ProcessorChain

该类实际上实现一个队列的功能,它代表一个由许多处理器连接的处理器链.

Code

 

(3)ProcessorChainList

该类是保存一次抓取任务的所有的处理器链(ProcessorChain).


package org.archive.crawler.framework;
public class ProcessorChainList {
    
//处理器链列表,保存所有的处理器链
    private List<ProcessorChain> chainList = new ArrayList<ProcessorChain>();
    
//所有的处理器
    private Map<String,ProcessorChain> chainMap
     
= new HashMap<String,ProcessorChain>();

     
/** Add a new chain of processors to the chain list.
     * 将所有的处理器链添加到Map中
     * This method takes a map of processors and wraps it in a ProcessorChain
     * object and adds it to the list of chains.
     *
     * 
@param processorMap the processor map to be added.
     
*/
    
public void addProcessorMap(String name, MapType processorMap) {
        
//由MapType生成一个处理器链
        ProcessorChain processorChain = new ProcessorChain(processorMap);
        ProcessorChain previousChain 
= getLastChain();
        
if (previousChain != null) {
            
//设置下一个处理器链
            previousChain.setNextChain(processorChain);
        }
        chainList.add(processorChain);
        chainMap.put(name, processorChain);
    }

    
/** Get the first processor chain.
     * 获取第一个处理链
     * 
@return the first processor chain.
     
*/
    
public ProcessorChain getFirstChain() {
        
return (ProcessorChain) chainList.get(0);
    }

 

 (4)ToeThread

为了高效抓取网页,Heritrix采用了线程池的设计.每一个线程将调用所有的处理器来处理链接.

Code

(5)处理器链的初始化

所有的处理器链都是在CrawlController的initialize中初始化的.

Code

Code
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值