我已经将 Apache Nutch 2.0 源代码移植到我的项目中,可以直接修改和构建它。根据我的阅读, -topN 参数决定了该深度/页面中有多少得分最高的链接将排队。实际上,网上可用的资源让我感到困惑,这让我想到了我的第一个问题:
-topN
是否对应于每个深度要获取的最高得分链接数?还是每页?
我的第二个:
- 这些 topN 链接是否与来自其他页面/深度的其他排队的 topN 链接按优先级排队?例如
topN = 2
,1个种子URL,对于从种子URL爬取的2个页面,从这个深度获取的链接是否聚合然后排序?或者只对页内链接进行排序?这假设topN
是每页。
我想做的是改变 Nutch 的广度优先行为。我希望首先抓取得分最高的链接,无论它们来自哪个深度。据我了解,Nutch 首先抓取所有种子网址,然后抓取 深度=1
中的所有 topN
链接,然后抓取 深度=2
中的 topN
链接,依此类推......我想做的是:
- 首先抓取所有种子网址
- 然后抓取得分最高的链接。
- 提取得分最高的页面中的外链
- 将链接排队到 PriorityQueue
- 将当前得分最高的链接出列,依此类推...
这让我想到了这些问题:
- 是否可以插入逻辑来遵循上述抓取行为?基本上将网络遍历更改为广度优先和深度优先的混合,并始终遍历到得分最高的链接。
- 我可以同时执行此操作吗?
最佳答案
Nutch的GenerateJob中使用TopN来获取FetchJob中要获取的Top N最高得分URL。它不是每页的抓取深度。
您可以通过修改 <name>http.content.limit</name>
的值来更改深度。在 nutch-site.xml 文件中。
关于java - Apache Nutch - 修改要抓取的链接队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33664159/