Nutch爬虫实验运行及抓取数据分析(一)

为了更深入地对Nutch爬虫进行了解,我们需要运行一个实际的抓取过程并对这个过程中的细节进行记录,对抓取生成的结果文件进行内容分析。首先你需要下载Nutch程序并搭建起可以令其运行的平台,这在网上都有详细的说明资料,我就不赘述了。我们需要做的第一步就是建立起一个实验用的Web站点,这个站点只包含了四个网页。图1描述了这四个网页之间的链接关系,并且C网页和C-dup网页的网页内容是相同的。

 

1  实验站点结构图

我们首先需要设置种子URL,我们设置A网页为爬虫起始抓取网页。命令如下:

echo 'http://keaton/tinysite/A.html' > urls

另外我们需要限制Crawler只抓取这个实验站点的网页,Nutch爬虫使用一个Filter来识别URL是否需要抓取。我们可以通过对conf/crawl-urlfilter.txt文件的修改来实现这个Filter,将文件中的

+^http://([a-z0-9]*\.)*MY.DOMAIN.NAME/

内容修改为

+^http://keaton/

接下来,我们执行下面的命令行来运行Crawler

bin/nutch crawl urls -dir crawl-tinysite -depth 3 >& crawl.log

在这个爬行命令中,我们设置抓取结果存储于crawl-tinysite文件夹中,抓取日志为crawl.log,另外限定了抓取深度为3,也就是告诉Crawler需要执行3次“产生/抓取/更新”循环就可以抓取完毕了。由于实验站点的简陋,深度为3就可以了,但是在实际运行时需要根据实际情况来进行设置。

下面就让我们通过对抓取产生文件的内容分析来进一步的了解Crawler的工作吧。

首先我们来看一下抓取过程中产生的所有文件有哪些,打开crawl-tinysite文件夹,里面有三个子目录,详细如图2所示:

2 爬虫运行完毕所生成文件

Nutch自身带了很多查看结果文件的工具,我们利用它们来进行文件内容展示。

WebDB

首先我们需要看一下WebDB中的网页数目和链接数目,以确定站点爬行情况,执行下面的命令行:

bin/nutch readdb crawl-tinysite/db -stats

结果为:

Number of pages: 4

Number of links: 4

正如所料,其中包括四个网页(A,B,C,C-dup)和四个链接。因为WebDB只能去除重复URL,所以其中仍然含有C-dup网页,但是A网页却并没有被抓取两次。接下来,看一下WebDB中的网页实体和链接实体的具体存储内容,执行命令:

bin/nutch readdb crawl-tinysite/db -dumppageurl

生成结果:

Page 1: Version: 4

URL: http://keaton/tinysite/A.html

ID: fb8b9f0792e449cda72a9670b4ce833a

Next fetch: Thu Nov 24 11:13:35 GMT 2005

Retries since fetch: 0

Retry interval: 30 days

Num outlinks: 1

Score: 1.0

NextScore: 1.0

 

 

Page 2: Version: 4

URL: http://keaton/tinysite/B.html

ID: 404db2bd139307b0e1b696d3a1a772b4

Next fetch: Thu Nov 24 11:13:37 GMT 2005

Retries since fetch: 0

Retry interval: 30 days

Num outlinks: 3

Score: 1.0

NextScore: 1.0

 

 

Page 3: Version: 4

URL: http://keaton/tinysite/C-duplicate.html

ID: be7e0a5c7ad9d98dd3a518838afd5276

Next fetch: Thu Nov 24 11:13:39 GMT 2005

Retries since fetch: 0

Retry interval: 30 days

Num outlinks: 0

Score: 1.0

NextScore: 1.0

 

 

Page 4: Version: 4

URL: http://keaton/tinysite/C.html

ID: be7e0a5c7ad9d98dd3a518838afd5276

Next fetch: Thu Nov 24 11:13:40 GMT 2005

Retries since fetch: 0

Retry interval: 30 days

Num outlinks: 0

Score: 1.0

NextScore: 1.0

可以看出每一块内容是一个网页实体的信息,ID代表的是网页内容的MD5摘要,所以网页C和网页C-dup拥有一样的ID,另外还有其它的信息例如重新抓取预定时间和网页评分等。下面看看链接,执行命令:

bin/nutch readdb crawl-tinysite/db -dumplinks

生成结果:

from http://keaton/tinysite/B.html

 to http://keaton/tinysite/A.html

 to http://keaton/tinysite/C-duplicate.html

 to http://keaton/tinysite/C.html

 

from http://keaton/tinysite/A.html

 to http://keaton/tinysite/B.html

当抓取网页过多时,查看命令还可以通过URL或者MD5 hash单独查看单个网页实体,例如命令:

bin/nutch readdb crawl-tinysite/db -linkurl http://keaton/tinysite/B.html

结果:

Found 1 links.

Link 0: Version: 5

ID: fb8b9f0792e449cda72a9670b4ce833a

DomainID: 3625484895915226548

URL: http://keaton/tinysite/B.html

AnchorText: B

targetHasOutlink: true

看以看出得到的是单个的网页A

未完待续,请继续关注Nutch爬虫实验运行及抓取数据分析(二)》

备注

参考文章:http://today.java.net/pub/a/today/2006/01/10/introduction-to-nutch-1.html

本文章为原创,如要转载请务必注明本文章出处http://blog.donews.com/52se

posted @ 2006-07-08 14:59  kwklover  阅读(23544)  评论(0编辑  收藏  举报