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