Heritrix扩展有两种方式:一种是重写FrontierScheduler;一种是重写Extractor;今天讲第一种。
它的作用是在后处理时踢出一些不满足条件的url,直接上代码
package org.VOD.Video; import org.archive.crawler.datamodel.CandidateURI; import org.archive.crawler.postprocessor.FrontierScheduler; public class FrontierSchedulerForKuwo extends FrontierScheduler { private final String URLRULE = "(http://www.kuwo.cn/mingxing/.+)" + "|(http://yinyue.kuwo.cn/yy/.*)" + "|(http://fang.kuwo.cn.*)" + "|(http://yinyue.kuwo.cn/artist-.*)" + "|(http://www.kuwo.cn/yinyue/\\d.*)"; private static final long serialVersionUID = -409020617017309961L; public FrontierSchedulerForKuwo(String name) { super(name); } protected void schedule(CandidateURI caUri) { String url=caUri.toString(); if( isMatchedURL( url ) || url.indexOf( "dns" ) >= 0 ) { this.getController().getFrontier().schedule(caUri); } else { return; } } public boolean isMatchedURL( String url ) { if ( url.matches( URLRULE) ) { return true; } else { return false; } } }
当然还需要修改conf/modules下的Processor.options文件,加入org.VOD.Video.FrontierSchedulerForKuwo|FrontierSchedulerForKuwo