`

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

阅读更多

运行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

 

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



 

 

 

 

 

 

 

 

 

  • 大小: 65.7 KB
2
0
分享到:
评论
3 楼 weiailing 2014-05-29  
那杨老师你这个问题是怎么解决的?
2 楼 yangshangchuan 2014-03-19  
hlt0407 写道
   转了下你的视频

1 楼 hlt0407 2014-03-19  
   转了下你的视频

相关推荐

    nutch入门.pdf

    为达成这一目标,Nutch需要能够每月爬取数十亿网页,维护索引,执行每秒上千次的搜索请求,并提供高质量的搜索结果,同时还要保证最低的运行成本。 与Lucene的区别:简单来说,Lucene是一个用于实现全文检索的软件...

    windows下安装nutch

    运行`bin/nutch`命令,如果没有错误提示,说明Nutch已经成功安装。 8. **Nutch的配置**:安装完成后,你需要根据需求配置Nutch的配置文件,通常位于`conf`目录下,如`nutch-site.xml`。这些配置包括爬虫的种子URL、...

    提高nutch运行效率的原理与方法

    在提供的文件中,"提高nutch运行效率的优化方法1.png"和"提高nutch运行效率的优化方法2.png"可能是展示具体优化步骤的图表,而"提高nutch运行效率的原理.png"则可能解释了Nutch运行的基本原理,这些图像可以帮助读者...

    Nutch程序运行环境配置

    Nutch程序运行环境配置是Java开发中的一个重要环节,特别是在Windows操作系统上进行Nutch相关的开发工作。Nutch是一个开源的Web爬虫项目,用于抓取互联网上的网页并建立索引,通常与Hadoop等大数据处理框架结合使用...

    Nutch2.3.1 环境搭建

    在本文中,我们将深入探讨如何搭建Nutch2.3.1的运行环境,以便进行网页抓取和分析。 **一、系统需求** 首先,确保你的系统满足以下基本要求: 1. 操作系统:Nutch可以在Linux、Unix或Mac OS X等类Unix系统上运行,...

    Nutch配置环境\Nutch1[1].4_windows下eclipse配置图文详解.docx

    Apache Nutch 是一个开源的网络爬虫框架,用于抓取互联网上的网页并生成索引,以便于搜索引擎使用。本文将详细介绍如何在Windows环境下配置Nutch 1.4,并使用Eclipse进行开发。以下是你需要知道的关键步骤: 1. **...

    nutch框架 搜索引擎

    搭建Nutch框架涉及到多个步骤,首先需要确保服务器环境符合Nutch的运行要求,通常推荐使用Linux操作系统。具体步骤如下: 1. **环境准备**:安装Java运行环境,因为Nutch是基于Java开发的,Java版本应符合Nutch的...

    Nutch an Open-Source Platform for Web Search

    ### Nutch:一个开源的网络搜索引擎平台 #### 概述 Nutch 是一个由 Apache Software Foundation 托管的开源项目,旨在提供一个完整的、高质量的网络搜索系统,并为开发新型网络搜索引擎提供了一个灵活且可扩展的...

    Nutch1.0:Nutch1.0修改版(整合中文分词)原始码修改,编译打包-修改

    然后,他们可以运行Nutch的命令行工具进行网页抓取、索引创建以及查询操作。 总的来说,这个Nutch1.0修改版体现了开源社区的力量,通过协作和共享,解决了特定语言环境下(如中文)的问题,提升了工具的适用性和...

    lucene2.4+nutch学习笔记三:lucene 在多个文本文档里找出包含一些关键字的文档

    3. **运行Nutch**:执行Nutch的命令行工具,如`bin/nutch crawl`,启动爬虫流程。 4. **搜索关键词**:Nutch完成索引后,可以通过HTTP接口或API,使用IndexSearcher搜索含有特定关键词的文档。 四、实际应用示例 ...

    Nutch:一个灵活可扩展的开源web搜索引擎

    Nutch是Apache软件基金会开发的一个开源Web搜索引擎项目,它的设计目标是提供一个可扩展、灵活的搜索解决方案。Nutch不仅能够抓取和索引互联网上的网页,还支持对抓取的数据进行分析和处理,以便为用户提供高质量的...

    eclipse配置nutch,eclipse配置nutch

    为了使Nutch在Eclipse中正常运行,你需要修改Nutch的默认配置文件`nutch-default.xml`。具体而言,将`plugin.folders`参数改为`"./src/plugin"`,以确保Nutch能够识别到项目的插件目录。 #### 步骤5:设置URL文件 ...

    nutch-0.9 环境搭建所需最小cygwin

    Cygwin是一个在Windows上模拟Linux环境的开源软件,它提供了许多在Linux环境下才能运行的命令行工具,使得我们能够在Windows系统上执行类似Linux的操作,这对于需要在Windows系统中运行Nutch这样的基于Unix/Linux的...

    nutch的安装方法,好用

    - 在Cygwin环境中执行 `bin/nutch` 命令,按照提示完成抓取任务的配置与启动。 2. **检查日志**: - 查看Nutch的工作日志,确保没有错误发生。 - 如果出现任何问题,请参考官方文档或社区资源进行排查。 #### ...

    Windows下配置nutch

    因为 Nutch 原生设计在 Linux 环境下运行,所以在 Windows 上配置 Nutch 需要一些额外的步骤。主要有两种方法: - **在 Eclipse 中使用 Nutch**: - 创建一个新的 Java 项目。 - 导入 Nutch 源码,将 `src\java`...

    nutch入门经典翻译1:Introduction to Nutch, Part 1: Crawling

    《Nutch入门经典翻译1:Introduction to Nutch, Part 1: Crawling》一文深入介绍了Nutch这一开源网络爬虫框架的基本概念、体系结构及其关键组件,为初学者提供了全面的理解视角。以下是对该文章核心知识点的详细解读...

    nutch-windows-script:在 Windows 上运行 Nutch 的简单脚本

    这个“nutch-windows-script”项目提供了一套专为Windows环境设计的脚本,使得在Windows上运行Nutch 2.1变得更加方便。在Windows操作系统中,由于默认不支持Bash shell,因此通常需要额外的配置来执行基于Unix/Linux...

    nutch2.2.1-src

    Apache Nutch 是一个开源的网络爬虫项目,用于抓取互联网上的网页并建立索引,是大数据和搜索引擎技术的重要组成部分。Nutch 2.2.1 是该项目的一个稳定版本,包含了许多优化和改进。源码的提供使得用户可以深入理解...

Global site tag (gtag.js) - Google Analytics