nutch 1.0 读源码,过滤掉不正确的URL实现方法:
对URL不规则或想过滤掉的地方,可以通过修改源码来实现,省去写配置文件,因为配置文件并不是太明朗,有些配置了也不一定成功。所以我考虑在源码上作操作。更好地扩展。当然你也可以去写插件,这儿就不说了,因为我也没有去那样实现,我只是对插件进行了扩展采集自己想要的内容。
过滤URL部分:
类:CrawlDbFilter
// 对url过滤的处理方法。可以实现一个自己的过滤器对URL进行重新定义成自己喜欢的URL
public void map(Text key, CrawlDatum value,
OutputCollector<Text, CrawlDatum> output,
Reporter reporter) throws IOException {
String url = key.toString();
if (urlNormalizers) {
try {
url = normalizers.normalize(url, scope); // normalize the url
} catch (Exception e) {
LOG.warn("Skipping " + url + ":" + e);
url = null;
}
}
if (url != null && urlFiltering) {
try {
//此处为过滤的URL规则
url = filters.filter(url); // filter the url
} catch (Exception e) {
LOG.warn("Skipping " + url + ":" + e);
url = null;
}
}
//在此加入自己的过滤器:如定义MyUrlFilter
//即可以如此判断:
// if(url != null){
// url = MyUrlFilter.filter(url);//处理掉不要的url
// }
//如果两次过滤都符合要求规则,则为有效URL
if (url != null) { // if it passes
newKey.set(url); // collect it
output.collect(newKey, value);
}
}
更多交流:
垂直搜索QQ:群:55388905
最近自己的小项目:http://www.lsoba.com