[Nutch]抓取周期单步执行过程详解

在前一篇博文中有对nutch爬虫的抓取周期做一个说明,主要分为5步:

1.inject—>2.generate—>3.fetch—>4.parse—>5.update

架构图如下:
[Nutch]抓取周期单步执行过程详解_第1张图片

本次我们就对nutch爬虫的一个抓取周期中的每一步进行详细的说明。

一、注入

注入使用的命令为:inject
参数如下:
inject参数
包含两个参数:

  • crawldb:crawldb目录路径
  • url_dir:抓取的url的路径

执行如下命令:

bin/nutch inject data/crawldb urls

结果如下:
[Nutch]抓取周期单步执行过程详解_第2张图片

因为在urls目录下面有两个文本文件:url.txt和url2.txt,所以从执行结果可以看出有2个url被注入:
这里写图片描述

根据我们上一篇博文中介绍的方法来从crawldb中读取已经注入的内容。

1. 查看状态

[Nutch]抓取周期单步执行过程详解_第3张图片
总共有2个url。

2. 查看内容

[Nutch]抓取周期单步执行过程详解_第4张图片
从crawldb中的内容可以看到,确实是有我们之前注入的两个url。

二、产生抓取列表

使用的命令是:generate
参数如下:
这里写图片描述
包含两个必选参数:

  • crawldb:crawldb目录
  • segments_dir:segments目录

执行如下命令:

bin/nutch generate data/crawldb data/segments

结果如下:
[Nutch]抓取周期单步执行过程详解_第5张图片

查看抓取列表的内容的命令如下:

 bin/nucth readseg -dump data/segments/20160430003053 data/segments/20160430003053_dump -nocontent -nofetch -noparse -noparsedata -noparsetext

由于目前我们还没有进行抓取操作,所以不会生成parse_text目录,抓取列表的内容等我们执行抓取过程之后再来查看,这个部分的内容是不会发生变化的。

三、抓取

抓取的命令为:fetch
参数如下:
这里写图片描述
包含两个参数:

  • segment:segment的目录
  • threads n:表示执行的线程个数

执行如下命令:

bin/nutch fetch data/segments/20160430003053 -threads 2

执行结果如下:
[Nutch]抓取周期单步执行过程详解_第6张图片

从上一篇博文可以知道,在segment下面会产生2个目录:
- content
- crawl_fetch

这里写图片描述

四、解析

解析的命令为:parse
参数如下:
这里写图片描述
包含一个必选参数:
- segment:segment的路径

执行如下命令:

bin/nutch parse data/segments/20160430003053

执行结果如下:
这里写图片描述
执行完成之后,只解析了一个url,用时大概17ms。

五、更新crawldb

作用:将新的url存入crawldb中,并对之前的url状态进行更新。
命令:update
参数如下:
[Nutch]抓取周期单步执行过程详解_第7张图片
参数:
- crawldb:crawldb目录路径;
- dir segments:segment的路径,可以是一个或者多个;

执行如下命令:

bin/nutch updatedb data/crawldb -dir data/segments

执行结果如下:
[Nutch]抓取周期单步执行过程详解_第8张图片

整个抓取周期就已经完成,开始进入下一个抓取周期。

六、确认

1. 确认一下crawldb中url的数目:

[Nutch]抓取周期单步执行过程详解_第9张图片
从中可以看到,crawldb中总共有53个url,有51个没有抓取,1个临时重定向。

2. 之前在产生抓取列表的时候,由于没有真正的抓取,所以无法查看具体的内容,现在我们来看一下:

使用命令:

bin/nucth readseg -dump data/segments/20160430003053 data/segments/20160430003053_dump -nocontent -nofetch -noparse -noparsedata -noparsetext

执行结果:
这里写图片描述

查看抓取列表的内容:
[Nutch]抓取周期单步执行过程详解_第10张图片

你可能感兴趣的:(爬虫,Nutch,单步执行,抓取周期)