【问题标题】:Nutch - how to crawl by small patches?Nutch - 如何通过小块爬行?
【发布时间】:2011-02-02 00:46:05
【问题描述】:

我无法让 Nutch 为我爬一小块地。我通过 bin/nutch crawl 命令启动它,参数为 -depth 7 和 -topN 10000。它永远不会结束。仅在我的 HDD 为空时结束。我需要做什么:

  1. 开始用 进一步发展的可能性 外链。
  2. 抓取 20000 页,然后 索引它们。
  3. 再爬20000 页面,索引它们并与 第一个索引。
  4. 循环步骤 3 n 次。

也尝试了在 wiki 中找到的脚本,但我发现的所有脚本都没有更进一步。如果我再次运行它们,它们会从头开始做所有事情。在脚本结束时,我有相同的索引,当我开始爬行时。但是,我需要继续爬行。

【问题讨论】:

    标签: lucene web-crawler nutch


    【解决方案1】:

    您必须了解 Nutch 生成/获取/更新周期。

    循环的生成步骤将从爬网数据库中获取 url(您可以使用 topN 参数设置最大数量)并生成新的段。最初,爬网数据库将仅包含种子 url。

    获取步骤执行实际的抓取。页面的实际内容存储在段中。

    最后,更新步骤使用 fetch 的结果更新爬网数据库(添加新的 url,设置 url 的最后获取时间,设置 url 的获取的 http 状态代码等)。

    crawl 工具将运行此循环 n 次,可通过 depth 参数进行配置。

    所有循环完成后,抓取工具将删除启动它的文件夹中的所有索引,并从所有段和抓取数据库中创建一个新索引。

    因此,为了满足您的要求,您可能不应该使用 crawl 工具,而是调用各个 Nutch 命令,这就是 crawl 工具的作用在幕后做。这样,您将能够控制抓取的次数,并确保索引始终在每次迭代时合并而不是删除。

    我建议您从脚本定义here 开始,然后根据您的需要进行更改。

    【讨论】:

    • 谢谢!现在我了解了 Nutch 的工作原理。一个问题:在初始步骤中抓取数据库仅使用种子网址。我爬了起来,在我的 crawldb 中得到了 100000 个网址。当我再次开始爬取,并且不使用 -topN 参数时,nutch 将从它的 crawldb 中爬取多少 url?
    • 如果不指定 topN 参数,generate 命令将获取所有准备好获取的 url 并将它们添加到新段中。之前抓取中发现的所有新 url 都将被获取。对于已经获取的 url,根据 db.fetch.interval.default 和 db.fetch.interval.max 参数,只有在到期时才会再次获取它们。
    • 所以,我什至不需要指定深度,是吗? Nutch 将在一个深度中获取 100000 个 url。对吗?
    • 是的,深度仅应用于 crawl 命令以指定要执行的生成/获取/更新周期数。是的,生成命令应该获取所有准备好获取的 url。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多