下图提供网上找来的相关流程图片,以便于理解:
总结如下:
1) 建立初始 URL 集
2) 将 URL 集注入 crawldb 数据库---inject
3) 根据 crawldb 数据库创建抓取列表---generate
4) 执行抓取,获取网页信息---fetch
5) 解析抓取的内容---parse segment
6) 更新数据库,把获取到的页面信息存入数据库中---updatedb
7) 重复进行 3~5 的步骤,直到预先设定的抓取深度。---这个循环过程被称为“产生/抓取/更新”循环
8) 根据 sengments 的内容更新 linkdb 数据库---invertlinks
6) 更新数据库,把获取到的页面信息存入数据库中---updatedb
7) 重复进行 3~5 的步骤,直到预先设定的抓取深度。---这个循环过程被称为“产生/抓取/更新”循环
8) 根据 sengments 的内容更新 linkdb 数据库---invertlinks
9) 建立索引---index
-----------------------------------------------------------------------------------------------------------------------
topN n 第一次抓取注入的url的n条url(根据权重分值, 每个url都有一个分数,是根据这个分数来排序的。你可以通过插件来扩展这个ScoreFilter的generatorSortValue来实现对url的排序)。第一层抓取结束后通过解析把第一层抓取到的url(假设每个页面平均有5个超级链接,则生成5N条新的url)生成新的url集加入到CrawDb中。(如果第一层的url没有抓完的话,第二层生成的N个url也会有第一层的url)。
然后接着下一层的抓取(循环以上操作,depth是就抓取的深度,也就是循环的次数)。
------------------------------------------------------------------------------------------------------------------------------
手动设置种子网址的url,设置fetchInterval(再次抓取的时间间隔 单位:秒)和score(分数可以在generate的时候提高抓取的机制)
http://news.163.com nutch.fetchInterval=xxxx nutch.score=100 (中间是tab不是空格)