文档章节

运行nutch提示:0 records selected for fetching, exiting

杨尚川
 杨尚川
发布于 2015/04/07 04:06
字数 1095
阅读 433
收藏 4

运行Nutch的时候提示Generator: 0 records selected for fetching, exiting ...


然后程序退出,怎么回事呢?

 

原因多种多样,归根结底就是CrawlDB中的URL经过爬虫抓取调度器(默认是


org.apache.nutch.crawl.DefaultFetchSchedule)判断,断定都不应该去抓,


以,Stop The World。

 

我们使用命令如下命令来查看CrawlDB的统计信息:

 

bin/nutch readdb data/crawldb -stats

 

 

结果如下:

 

CrawlDb statistics start: data/crawldb
Statistics for CrawlDb: data/crawldb
TOTAL urls:     347457
retry 0:        346506
retry 1:        951
min score:      0.0
avg score:      6.605134E-6
max score:      1.0
status 1 (db_unfetched):        951
status 2 (db_fetched):  337818
status 3 (db_gone):     3637
status 4 (db_redir_temp):       5006
status 5 (db_redir_perm):       45
CrawlDb statistics: done

 

 

我们发现db_unfetched状态的URL还有951个,怎么不抓了呀?呵呵,别急,


续看,发现retry 1的URL也有951个,retry 1是什么东东呢?就是抓取失败


了,待1天(默认)后再次去抓的URL,哦,现在明白了吧,这些


db_unfetched状的URL其实都已经抓过了,不过都抓取失败了,因为


只有抓取成功的URL的状才会变为非db_unfetched的其他状态。

 

弄明白了为什么爬虫退出的原因之后,还有疑问吗?对这些抓取失败的URL


是什么原因导致的失败不感兴趣吗?

 

我们把CrawlDB中db_unfetched状态的URL导出为文本文件,看看到底是些


什么URL,失败的原因都是些什么,用如下命令:

 

bin/nutch readdb data/crawldb -dump crawldb_dump -format normal -status

 

命令执行完毕我们就可以看这个导出的文本文件里面的内容了,文件位于


当前路径下crawldb_dump/part-00000。

 

我们要确认一下导出的文本文件的db_unfetched状态的URL的数目是否


为951,用如下命令:

 

cat crawldb_dump/* | grep db_unfetched | wc

 

 结果如下:

 

    951    2853   23775

 

 

数目没问题。然后使用如下命令找到抓取失败的信息:

 

cat crawldb_dump/* | grep exception | wc

 

 

结果如下:

 

    951    7300   91535

 

 

数目也是951,这就说明了状态为db_unfetched的951条URL都抓过了,不幸


的是都失败了。

 

接着我们要从这951条失败信息中提取出抓取失败的类型,使用如下命令去除


复的失败信息:

 

cat crawldb_dump/* | grep exception | sort | uniq | wc

 

 

结果如下:

 

     35     242    4034

 

 

去重之后只剩下35条了,太好了,人眼可以识别了呀,呵呵,我们进一步去除


以:隔开的前三个字段,这3个字段每条数据都相同,使用以下命令:

 

cat crawldb_dump/* | grep exception | sort | uniq | awk -F ":" '{print $4 $5}' | uniq | more

 

 

结果如下:

 

Http code=403, url=http//bgt.mof.gov.cn/mofhome/mof/1557/
Http code=403, url=http//bgt.mof.gov.cn/mofhome/mof/zhengwuxinxi/tianbanli/2006tabl/rdjydf/
Http code=403, url=http//bgt.mof.gov.cn/mofhome/mof/zhengwuxinxi/tianbanli/2006tabl/zs/
Http code=403, url=http//bgt.mof.gov.cn/mofhome/mof/zhengwuxinxi/tianbanli/2006tabl/zxtadf/
Http code=403, url=http//bgt.mof.gov.cn/mofhome/mof/zhuantihuigu/czgg0000_1/spjl/
Http code=403, url=http//gjs.mof.gov.cn/mofhome/mof/1557/
Http code=403, url=http//gjs.mof.gov.cn/mofhome/mof/zhengwuxinxi/tianbanli/2006tabl/rdjydf/
Http code=403, url=http//gjs.mof.gov.cn/mofhome/mof/zhengwuxinxi/tianbanli/2006tabl/zs/
Http code=403, url=http//gjs.mof.gov.cn/mofhome/mof/zhengwuxinxi/tianbanli/2006tabl/zxtadf/
Http code=403, url=http//gjs.mof.gov.cn/mofhome/mof/zhuantihuigu/czgg0000_1/spjl/
Http code=403, url=http//gjs.mof.gov.cn/pindaoliebiao/dhjz/qqhzjz/20Ghy/czyhhzhy/5156/
Http code=403, url=http//gjs.mof.gov.cn/pindaoliebiao/zcyd/dhjz/20Ghy/czyhhzhy/5156/
Http code=403, url=http//kjhx.mof.gov.cn/gongzhongcanyu/
Http code=403, url=http//sn.mof.gov.cn/lanmudaohang/zixz/
Http code=403, url=http//wjb.mof.gov.cn/pindaoliebiao/
Http code=403, url=http//www.mof.gov.cn/1557/
Http code=403, url=http//www.mof.gov.cn/zhengwuxinxi/tianbanli/2006tabl/rdjydf/
Http code=403, url=http//www.mof.gov.cn/zhengwuxinxi/tianbanli/2006tabl/zs/
Http code=403, url=http//www.mof.gov.cn/zhengwuxinxi/tianbanli/2006tabl/zxtadf/
Http code=403, url=http//www.mof.gov.cn/zhuantihuigu/czgg0000_1/spjl/
Http code=403, url=http//xxzx.mof.gov.cn/zaixianfuwuxxzx/
Http code=403, url=http//xxzx.mof.gov.cn/zhuantilanmuxxzx/
Http code=403, url=http//zcpg.mof.gov.cn/skzd/skjs/
Http code=403, url=http//zcpg.mof.gov.cn/zywk/pgll/
Http code=403, url=http//zhs.mof.gov.cn/zhuantilanmu/
Http code=500, url=http//zcgl.mof.gov.cn/
java.net.ConnectException Connection refused
java.net.SocketException Connection reset
java.net.SocketTimeoutException connect timed out
java.net.SocketTimeoutException Read timed out
java.net.UnknownHostException czxh.mof.gov.cn
java.net.UnknownHostException docsvr.mof.gov.cn
java.net.UnknownHostException shdk.mof.gov.cn
java.net.UnknownHostException www.hn.mof.gov.cn
java.net.UnknownHostException ysyj.mof.gov.cn

 

 

经过人工分析(自动分析不奏效了)发现了7种不同类型的抓取错误注意:


的系统中跟我的可能不同):

 

Http code=403
Http code=500
Connection refused
Connection reset
connect timed out
Read timed out
java.net.UnknownHostException

 

 

分别使用这7种不同的抓取错误类型重新从导出的文件中进行统计,结果仍然


951。

 

cat crawldb_dump/* | grep "connect timed out" | wc
cat crawldb_dump/* | grep "Read timed out" | wc
cat crawldb_dump/* | grep 'Http code=403' | wc
cat crawldb_dump/* | grep 'Connection refused' | wc
cat crawldb_dump/* | grep "Connection reset" | wc
cat crawldb_dump/* | grep java.net.UnknownHostException | wc
cat crawldb_dump/* | grep 'Http code=500' | wc

 

好了,分析完毕,贴一张更直观完整的图来结束文章:



 

 

 

 

 

 

 

 

 


© 著作权归作者所有

杨尚川

杨尚川

粉丝 1103
博文 220
码字总数 1624053
作品 12
东城
架构师
私信 提问
nutch的分布式部署问题

本文在linux下部署了nutch,单机测试已经通过,即可以通过浏览器下载网页,以及查询,但是在分布式上就通过去了,nutch的配置是整个拷贝过去的,而且hadoop也是测试成功的,出错信息如下,恳...

xieyi
2012/10/09
827
1
Nutch1.7源码再研究之---8 Nutch的generate(续)

接下来的代码是: // read the subdirectories generated in the temp // output and turn them into segments List<Path> generatedSegments = new ArrayList<Path>(); FileStatus[] status......

强子哥哥
2014/10/15
0
0
nutch代理配置问题

在公司的网络设置了代理:在cygwin上执行bin/nutch...命令时连接不上(在没有代理的网络里:比如家里是可以的) 部分日志如下:Generator: jobtracker is 'local', generating exactly one ...

疯疯持刀
2013/11/15
724
0
Nutch1.7结合Hadoop2.5.1的分布式爬取全攻略

Hadoop 2.5.1可执行文件及集群搭建 集群安装:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/ClusterSetup.html【安装Hadoop集群】 http://blog.csdn.net/jiuti......

强子哥哥
2014/09/22
0
0
将nutch2.3的bin/crawl脚本改写为java类

将nutch2.3的bin/crawl脚本改写为java类 标签: nutch [TOC] nutch1.8以后,以前的主控代码类没了,只剩下对应的控制脚本,感觉在IDEA里面调试不方便,所以我了解了下shell脚本,根据nutch2....

brianway
2016/01/19
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

还为PDF转Word抓狂?以下神器让你在职场倍受欢迎!

身在职场的你,是否一直在琢磨:如何能让自己在公司更受欢迎?如何才能在办公室里混个好人缘?如何在同事圈里留个好印象?其实,想要让自己成为受欢迎的人,只要让自己成为大家需要的人不就行...

foxit2world
23分钟前
7
0
AndServer+Service打造Android服务器实现so文件调用

so 文件调用 随着 Android 移动安全的高速发展,不管是为了执行效率还是程序的安全性等,关键代码下沉 native 层已成为基本操作。 native 层的开发就是通指的 JNI/NDK 开发,通过 JNI 可以实...

夜幕NightTeam
24分钟前
4
0
Docker下kafka学习三部曲之二:本地环境搭建

在上一章《 Docker下kafka学习,三部曲之一:极速体验kafka》中我们快速体验了kafka的消息分发和订阅功能,但是对环境搭建的印象仅仅是执行了几个命令和脚本,本章我们通过实战来学习如何编写...

程序员欣宸
25分钟前
4
0
萌新推荐!不再为Excel转换PDF发愁,Aspose.Cells for .NET一步到位!

Aspose.Cells for .NET(点击下载)是Excel电子表格编程API,可加快电子表格管理和处理任务,支持构建具有生成,修改,转换,呈现和打印电子表格功能的跨平台应用程序。 将Excel工作簿转换为...

mnrssj
26分钟前
6
0
对于绘画小白怎么画制服?该注意什么?

怎样制作学生服装?想必绘画初学者们常常会想的问题吧,不知道怎样才能画好人物的衣服,别着急,今日就在这儿讲一些关于如何绘画学生衣服校服的教程给我们!期望能够帮到你们! 轻便西装是不...

热爱画画的我
31分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部