是否可以使用java代码读取crawldb?

1yjd4xko  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(312)

我正在使用nutch爬网一个网站,我想收集所有404网址在爬网过程中。然后我查阅了nutch wiki,发现使用nutch命令'readdb'可以产生如下结果:
http://.yy.com/  版本:7
状态:1(db\u未 eclipse 刻)
取货时间:2013年12月8日周日21:42:34 cst
修改时间:1970年1月1日星期四08:00:00 cst
获取后重试次数:0
重试间隔:2592000秒(30天)
得分:1分
签名:空
元数据:
所有404个网址的状态都是3。
我想这些信息都是从crawdb来的。那么,有没有办法用java代码读取crawldb呢?我还了解到nutch在hdfs上存储数据,所以我需要使用hadoop工具来读取它们吗?或者有没有更好的方法来达到我的要求?
p、 我的nutch版本是1.13,我的运行环境是ubuntu16.04

5rgfhyps

5rgfhyps1#

nutch是用java写的,所以有可能,实际上 readdb 指挥部就是这么做的 readdb 命令位于 org.apache.nutch.crawl.CrawlDbReader 班级。你可以看看那里实现你自己的命令。
关于你问题中的hadoop部分,nutch是在hadoop之上构建的,这意味着我们使用hadoop库,即使你在本地运行nutch,所以你应该使用hadoop库(特别是如果你想在某个时候在集群中运行爬虫程序)。
如果您只想得到所有404的列表,可以使用 -status 选择 readdb 命令。
您还可以看看nutch-2229,它增加了对在服务器上使用jexl表达式的支持 readdb 命令,这样您就可以从crawldb获取404url的列表,而无需编写自己的代码。

相关问题