在上一篇博文中有和大家介绍了nutch爬虫抓取数据的整个过程,爬虫一般会抓取到很多的内容,那么这些内容都存放到什么地方了呢?其实nutch在抓取的过程中会产生很多的目录,会把抓到的内容分别保存到不同的目录之中。那么,这些目录的结构的什么样的?每个目录里面又保存了哪些内容呢?本篇博文将为你揭晓。
从上一篇博文我们可以知道,nutch爬虫在执行数据抓取的过程中,在data目录下面有crawldb和segments两个目录:
下面我们对这两个目录里面的内容做详细的介绍:
1. crawldb
crawldb里面存储的是爬虫在抓取过程中的所有的URL,里面也有两个目录:current和old。
之前已经抓取过的url放到old目录中,当前需要执行的放到current目录里面。
在current目录下面有一个文件夹part-0000,如果是deploy模式的分布式方式,在这个目录下会有相关的其他一些目录,如:part-0001,part-0002等。在part-0000下面也有两个目录:data和index。
这个是hadoop的自身文件格式,其中
- data存放hadoop的所有的表库;
- index主要存放一些简单的索引,用于加快和方便查找。
2. segments
在segments目录下面,nutch没运行一个抓取周期,都会在segments目录下面生成一个文件夹:
上一篇博文里面我们在运行抓取的时候带的参数的depth是设置为3:
nohup bin/nutch crawl urls -dir data -depth 3 -threads 100 &
所以在这个命令运行完成之后,会生成3个目录,这3个目录都是以当前的时间作为标识。
在每个文件夹下面都存在6个子文件夹:
从上一篇博文里面的第4小结可以看出nutch爬虫抓取数据的整个过程:
而从这个图里面,也可以看出,segments目录下面的每个文件夹中的6个子文件夹都在Segment N里面,并且每个文件夹都与nutch爬虫抓取的4个过程有着相当紧密的联系。
从上图里面可以看出:
1. crawl_generate文件夹是nutch爬虫在执行第1个过程generator的时候产生的。
2. crawl_fetch和content文件夹都是nutch爬虫在执行第2个过程Fetcher的时候产生的。其中:
(1) content文件里里面保存的就是nutch爬虫抓取的网页的源代码的二进制的内容。
(2)crawl_fetch是每个url的抓取状态:成功抓取、抛出异常或者是其他的各种各样的状态。
3. crawl_parse、parse_data和parse_text是nutch爬虫在执行第3个过程parse segment的时候 产生的。其中:
(1)crawl_parse 是每个url的解析状态。有解析成功和解析失败。
(2)parse_data 是保存抓取内容的源数据。
(3)parse_text 是保存抓取内容的文本数据。
等nutch爬虫抓取完成之后,我们可以看到在data目录下面变成了3个目录,多了一个linkdb:
3. linkdb
linkdb目录主要存放在连接过程中产生的内容,同样的有一个part-0000目录,在这个目录下面也有data和index两个子目录。