java - Apache Nutch - 修改要抓取的链接队列

标签 java web-crawler nutch

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

  1. -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/

    相关文章:

    Nutch:以一定深度抓取每个 URL

    Java,基本数组错误

    seo - robots.txt:禁止除了少数几个,为什么不呢?

    solr - 即使有要获取的 URL,Nutch 上也出现“无可获取的 URL”错误

    html - 我如何使用 Perl 可靠地解析 QuakeLive 播放器配置文件?

    python - 将双端队列保存在文本文件中

    hadoop - Nutch:失败:java.net.SocketException:连接重置

    java - 在 r 或其他软件中查找草图图像的坐标(例如扫描为照片格式)

    java - 实体管理器不持久化类实例

    java - 从 Spring Aspect 调用不同的代理方法