我正在使用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
1条答案
按热度按时间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的列表,而无需编写自己的代码。