是否可以使用 java 代码读取 crawldb?
Is it possible to read crawldb using java code?
我正在使用Nutch抓取一个网站,我想收集抓取过程中所有的404 url。然后我查看了 Nutch wiki,我发现使用 nutch 命令 'readdb' 可以产生类似的东西:
http://xxx.yy.com/ Version: 7
Status: 1 (db_unfetched)
Fetch time: Sun Dec 08 21:42:34 CST 2013
Modified time: Thu Jan 01 08:00:00 CST 1970
Retries since fetch: 0
Retry interval: 2592000 seconds (30 days)
Score: 1
Signature: null
Metadata:
并且所有 404 网址的状态都是 3。
我认为这些信息都来自crawdb。那么有什么方法可以使用java代码来读取crawldb吗?我还了解到nutch将数据存储在HDFS上,所以我需要使用hadoop工具来读取它们吗?或者有没有更好的方法来实现我的要求?
P.s。我的Nutch版本是1.13,我的运行环境是Ubuntu16.04
Nutch 写在Java,所以是可能的,实际上readdb
命令就是这样做的,readdb
命令的逻辑在org.apache.nutch.crawl.CrawlDbReader
class。你可以看看那里实现你自己的命令。
关于你问题的 Hadoop 部分,Nutch 建立在 Hadoop 之上,这意味着我们使用 Hadoop 库,即使你 运行 在本地使用 Nutch,所以你应该使用 Hadoop 库 (特别是如果你想 运行 你的爬虫在某个时候在集群中)。
如果您只想获得所有 404 的列表,您可以使用 readdb
命令的 -status
选项。
您还可以查看 NUTCH-2229,它添加了对在 readdb
命令上使用 JEXL 表达式的支持,这样您就可以从 CrawlDB 中获取 404 URL 的列表,而无需编写你自己的代码。
我正在使用Nutch抓取一个网站,我想收集抓取过程中所有的404 url。然后我查看了 Nutch wiki,我发现使用 nutch 命令 'readdb' 可以产生类似的东西:
http://xxx.yy.com/ Version: 7
Status: 1 (db_unfetched)
Fetch time: Sun Dec 08 21:42:34 CST 2013
Modified time: Thu Jan 01 08:00:00 CST 1970
Retries since fetch: 0
Retry interval: 2592000 seconds (30 days)
Score: 1
Signature: null
Metadata:
并且所有 404 网址的状态都是 3。
我认为这些信息都来自crawdb。那么有什么方法可以使用java代码来读取crawldb吗?我还了解到nutch将数据存储在HDFS上,所以我需要使用hadoop工具来读取它们吗?或者有没有更好的方法来实现我的要求?
P.s。我的Nutch版本是1.13,我的运行环境是Ubuntu16.04
Nutch 写在Java,所以是可能的,实际上readdb
命令就是这样做的,readdb
命令的逻辑在org.apache.nutch.crawl.CrawlDbReader
class。你可以看看那里实现你自己的命令。
关于你问题的 Hadoop 部分,Nutch 建立在 Hadoop 之上,这意味着我们使用 Hadoop 库,即使你 运行 在本地使用 Nutch,所以你应该使用 Hadoop 库 (特别是如果你想 运行 你的爬虫在某个时候在集群中)。
如果您只想获得所有 404 的列表,您可以使用 readdb
命令的 -status
选项。
您还可以查看 NUTCH-2229,它添加了对在 readdb
命令上使用 JEXL 表达式的支持,这样您就可以从 CrawlDB 中获取 404 URL 的列表,而无需编写你自己的代码。