如何获取Nutch 1.x中seed.txt里被拒绝的完整URL列表?
获取Nutch 1.x中seed.txt被拒绝的完整URL列表
好问题!Nutch 1.x默认执行inject命令时确实只返回被拒绝URL的数量,要拿到完整的被拒URL列表,只需要调整日志级别就能轻松实现,下面是具体操作步骤:
1. 修改日志配置,开启DEBUG级别的输出
找到Nutch安装目录下的conf/log4j.properties文件,找到针对Injector组件的日志配置项,将日志级别从INFO改为DEBUG:
# 注释掉原来的INFO级别配置 # log4j.logger.org.apache.nutch.crawl.Injector=INFO # 启用DEBUG级别 log4j.logger.org.apache.nutch.crawl.Injector=DEBUG
这样配置后,Injector在运行时会输出所有被拒绝URL的详细信息。
2. 执行inject命令并提取被拒绝的URL
运行常规的inject命令,同时通过日志过滤把被拒绝的URL单独保存到文件中:
bin/nutch inject crawl/crawldb urls/ 2>&1 | grep "Rejected URL:" > rejected_urls.txt
这条命令会把所有包含Rejected URL:的日志行提取出来,写入到rejected_urls.txt文件里。打开这个文件,你就能看到seed.txt中所有被拒绝的URL了。
3. (可选)恢复默认日志级别
如果之后不需要再输出这么详细的日志,可以把log4j.properties里的Injector日志级别改回INFO,避免日志冗余。
原理说明
Nutch的Injector组件在处理种子URL时,会根据你配置的URL过滤规则(比如urlfilter-regex.txt中的规则)判断是否拒绝URL,这些拒绝的细节默认只在DEBUG级别的日志中输出,所以调整日志级别就能获取到完整的被拒URL列表,不需要修改任何核心代码。
内容的提问来源于stack exchange,提问作者Sudha Sompura
相关产品推荐
相关产品推荐

