Apache Nutch - 修改要进行爬网的链接队列

时间:2015-11-12 03:52:48

标签: java web-crawler nutch

我将Apache Nutch 2.0源码移植到我的项目中,可以修改&直接构建它。根据我的阅读,-topN参数确定该深度/页面中有多少顶级评分链接将排队。实际上,网上可用的资源让我感到困惑,这引出了我的第一个问题:

  1. -topN是否与每个深度的链接最高得分相对应?或者每页
  2. 我的第二个:

    1. 这些topN链接是否排在优先级与其他页面/深度的其他排队topN链接?例如,来自种子URL的2个已爬网页面的topN = 2,1种子网址是从此深度聚合然后排序的链接?或者只对页内链接进行排序?这假设每页topN
    2. 我想要做的是改变Nutch的广度优先行为。我希望首先抓取得分最多的链接,无论它们来自哪个深度。根据我的理解,Nutch首先抓取所有种子网址,然后抓取topN的所有depth=1个链接,然后抓取topN的{​​{1}}个链接等等......我想要的是什么要做的是:

      • 首先抓取所有种子网址
      • 然后爬上最高分的链接。
      • 在最高评分页面中提取外链
      • 将链接排队到PriorityQueue
      • 将当前得分最高的链接出列,依此类推......

      这引出了我这些问题:

      1. 是否可以插入逻辑以遵循上述爬网行为?基本上将网络遍历更改为广度优先和深度优先的混合,并始终遍历最高得分链接。
      2. 我能同时做到这一点吗?

1 个答案:

答案 0 :(得分:0)

在Nutch的GenerateJob中使用TopN来获取要在FetchJob中获取的前N个最高排名得分网址。它不是每页的爬行深度。 您可以通过修改nutch-site.xml文件中的<name>http.content.limit</name>值来更改深度。