`

nutch 1.0 读源码,过滤掉不正确的URL实现方法

QQ 
阅读更多

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics