nutch 1.0 读源码,过滤掉不正确的URL实现方法
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