【问题标题】:Is it possible to read crawldb using java code?是否可以使用 java 代码读取 crawldb?
【发布时间】:2017-08-29 14:54:11
【问题描述】:

我正在使用 Nutch 爬取一个网站,我想在爬取过程中收集所有 404 url​​。然后我查看了 Nutch wiki,我发现使用 nutch 命令'readdb'可以产生类似的东西:

http://xxx.yy.com/  版本:7

状态:1(db_unfetched)

获取时间:2013 年 12 月 8 日星期日 21:42:34 CST

修改时间:Thu Jan 01 08:00:00 CST 1970

获取后重试次数:0

重试间隔:2592000秒(30天)

得分:1

签名:空

元数据:

并且所有 404 url​​ 的状态都是 3。

我认为这些信息都来自 crawldb。那么有没有办法使用java代码读取crawldb?我还了解到 nutch 将数据存储在 HDFS 上,所以我需要使用 hadoop 工具来读取它们吗?或者有没有更好的方法来满足我的要求?

附:我的Nutch版本是1.13,我的运行环境是Ubuntu16.04

【问题讨论】:

    标签: java hadoop nutch


    【解决方案1】:

    Nutch 是用 Java 编写的,所以可以,实际上 readdb 命令正是这样做的,readdb 命令的逻辑在 org.apache.nutch.crawl.CrawlDbReader 类中。你可以看看那里来实现你自己的命令。

    关于您问题的 Hadoop 部分,Nutch 构建在 Hadoop 之上,这意味着我们使用 Hadoop 库,即使您在本地运行 Nutch,所以您应该使用 Hadoop 库(特别是如果您想运行您的某个时候集群中的爬虫)。

    如果您只想获取所有 404 的列表,可以使用 readdb 命令的 -status 选项。

    您还可以查看 NUTCH-2229,它增加了对在 readdb 命令上使用 JEXL 表达式的支持,这样您就可以从 CrawlDB 中获取 404 个 URL 的列表,而无需编写自己的代码。

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 1970-01-01
      • 2017-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多