深入学习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

 

 

posted @ 2008-10-23 12:27  YY哥  阅读(2524)  评论(0编辑  收藏  举报