- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
NUTCH源代码分析
NUTCH 一
Nutch 的大致工作流程可以通过上一篇文章有了一定的了解了。在上一篇文章中,主要
是针对一幅 Nutch 工作流程图片来了解 Nutch 的工作流程,十分感性,并没有涉及到任
何关于 Nutch 的包和类。这里通过在网上下载的一个《Nutch 入门学习》的 PDF 文档中
介绍的内容,来详细组织一下,加深了解,为深入研究 Nutch 的源代码奠定良好的基础。
这里通过几个标题来叙述。
Nutch 爬虫工作策略
Nutch 爬虫的工作策略一般则可以分为累积式抓取(cumulative crawling )和增量式抓取
(incremental crawling )两种。
累积式抓取是指从某一个时间点开始,通过遍历的方式抓取系统所能允许存储和处理的
所有网页。在理想的软硬件环境下,经过足够的运行时间,累积式抓取的策略可以保证
抓取到相当规模的网页集合。但由于 Web 数据的动态特性,集合中网页的被抓取时间点
是不同的,页面被更新的情况也不同,因此累积式抓取到的网页集合事实上并无法与真
实环境中的网络数据保持一致。
增量式抓取是指在具有一定量规模的网络页面集合的基础上,采用更新数据的方式选取
已有集合中的过时网页进行抓取,以保证所抓取到的数据与真实网络数据足够接近。进
行增量式抓取的前提是,系统已经抓取了足够数量的网络页面,并具有这些页面被抓取
的时间信息。
面向实际应用环境的网络蜘蛛设计中,通常既包括累积式抓取,也包括增量式抓取的策
略。累积式抓取一般用于数据集合的整体建立或大规模更新阶段;而增量式抓取则主要
针对数据集合的日常维护与即时更新。
在确定了抓取策略之后,如何从充分利用网络带宽,合理确定网页数据更新的时间点就
成了网络蜘蛛运行策略中的核心问题。
总体而言,在合理利用软硬件资源进行针对网络数据的即时抓取方面,已经形成了相对
比较成熟的技术和实用性解决方案,这方面目前所需解决的主要问题,是如何更好的处
理动态网络数据问题(如数量越来越庞大的 Web2.0 数据等),以及更好的根据网页质量
修正抓取策略的问题。
下面,通过针对 Nutch 工作流程中,各个关键的环节进行详细分析阐述,可能要涉及到
Nutch 的源代码:包和类,有助于在阅读Nutch 源代码的时候提供导向作用。
Nutch 工作流程:建立初始 URL 集合分析
初始 URL 集的建立有两种方式:超链接和站长提交。
超链接是指机器人程序根据网页链到其他网页中的超链接,就像日常生活中所说的“一传
十,十传百……”一样,从少数几个网页开始,连到数据库上所有到其他网页的链接。理
论上,若网页上有适当的超连结,机器人便可以遍历绝大部分网页。
站长提交是指在实际运行中,爬虫不可能抓取到所有站点,为此,网站站长可以向搜索
引擎进行提交,要求收录,搜索引擎经过核查之后,便将该网站加入到URL 集合中,进
行抓取。
Nutch 工作流程:inject 操作分析
inject 操作调用的是 nutch 的核心包之一 crawl 包中的类 org.apache.nutch.crawl.Injector 。
它执行的结果是:crawldb 数据库内容得到更新,包括 URL 及其状态。
inject 操作主要作用可以从下面 3 方面来说明:
1
(1) 将 URL 集合进行格式化和过滤,消除其中的非法 URL ,并设定 URL 状态
(UNFETCHED),按照一定方法进行初始化分值;
(2) 将 URL 进行合并,消除重复的 URL 入口;
(3) 将 URL 及其状态、分值存入 crawldb 数据库,与原数据库中重复的则删除旧的,更
换新的。
Nutch 工作流程:generate 操作分析
generate 操作调用的是 crawl 包中的类 org.apache.nutch.crawl.Generator 。它执行的结果是:
创建了抓取列表,存放于 segments 目录下,以时间为文件夹名称。循环抓取多少次,
segments 文件夹下就会有多
文档评论(0)