1
nutch 爬虫流程分析
一. 写在前面的话
“基于语义的搜索引擎开发”项目是在借助开源 nutch 的部分功能上来完成。而我
此次寒假中的任务正阅读理解 nutch 的源代码的基础上,
以便最终得以从 nutch 中抽离出我们需要的功能,并改进些许实现过程。
二. Nutch 数据集的基本组成
crawldb: 爬行数据库,用来存储所要爬行的网址
linkdb: 链接数据库,用来存储每个网址的链接地址,包括源地址和链
接地址
注:上面两个是 web link 目录,存放 url 及 url 的互联关系,作为爬行与重新爬行的依
据。
segments: 抓取的网址被作为一个单元,而一个 segment 就是一个单元。
一个 segment 包括以下几个子目录:
crawl_generate:包含待抓取的网址列表
crawl_fetch:包含每个抓取页面的状态
content:包含每个抓取页面的内容
parse_text:包含每个抓取页面的解析文本
parse_data:包含每个页面的外部链接和元数据
crawl_parse:包含网址的外部链接地址,用于更新 crawldb 数据库
注:是主目录,存放抓回来的网页。页面内容有 bytes[]的 raw content 和 parsed text 的
形式。nutch 以广度优先的原则来爬行,因此每爬完一轮会生成一个 segment 目录。
indexes: 采用 Lucene 的格式建立索引集
index: 是 lucene 的索引目录,是 indexes 目录里所有 index 合并后的完整索引,注意索
引文件只对页面内容进行索引,没有进行存储,因此查询时要去访问 segments 目录才能获
得页面内容。
1.Crawldb 中数据构成:
其
中
Status 有:
2.segments 中数据构成: