参考资料1. http://hi.baidu.com/shirdrn/item/5bc5cff7dd8d9615ce9f32ae
参考资料2. http://a280606790.iteye.com/blog/825045
第一步分析核心流程:
1. 建立初始URL集合分析
2.
inject操作分析
inject操作调用的是nutch的核心包之一crawl包中的类org.apache.nutch.crawl.Injector。它执行的结果是:crawldb数据库内容得到更新,包括URL及其状态。
3.
generate操作分析
generate操作调用的是crawl包中的类org.apache.nutch.crawl.Generator。它执行的结果是:创建了抓取列表,存放于segments目录下,以时间为文件夹名称。循环抓取多少次,segments文件夹下就会有多少个以时间为名称的文件夹。
4.
fetch操作分析
fetch操作调用的是fetcher包中的类org.apache.nutch.fetcher.Fetcher。它执行的结果是:将页面内容抓取下来,存于segment目录下。
5.
parse操作分析
parse操作调用的是parse包中的类org.apache.nutch.parse.ParseSegment。它执行的结果是:将fetch得到的页面解析为text和data,存于segments目录下。
(parse操作主要作用可以从下面3方面来说明:
(1) 解析segment中由fetch得到的页面,并进行整理,将页面分成为parse-date和parse-text;
(2) parse-date中保存的是页面的题名、作者、日期、链接等内容;
(3) parse-text中保存的是页面的文本内容。
例如,我只执行一次抓取任务,就执行了上述的一些操作,操作的结果直接反映在segments目录中。可以看到在home\SHIYANJUN\nutch-0.9\mydir\segments目录下面创建了20081004102407这个目录,该目录中包含6个目录:content、crawl_fetch、crawl_generate、crawl_parse、parse_data、parse_text,从目录名称就可以大致知道该目录存取的相关内容信息。)
6.
updatedb操作分析
updatedb操作调用的是crawl包中的类org.apache.nutch.crawl.CrawlDb。它执行的结果是:更新了crawldb数据库,为下一轮抓取做准备。
7.
invertlinks操作分析
invertlinks操作用来更新linkDB,为建立索引的工作提供准备。