介绍 Nutch 第一部分:抓取过程详解(2)
通过上文现在我们有了一些基本的概念了,现在应该接触实际的操作了,因为懂得原理和实践还是有很大差距的。
抓取是一个循环的过程:抓取蜘蛛从WebDB中生成了一个 fetchlist 集合;抽取工具根据fetchlist从网络上下载网页内容;蜘蛛程序根据抽取工具发现的新链接更新WebDB;然后再生成新的fetchlist;周而复始。(注:蜘蛛是分两个部分的。有一次在公司的一个讨论会上还就此争论了一番,google也是如此,以后会给出例子。)这个抓取循环在nutch中经常指: generate/fetch/update 循环。
一般来说同一域名下的 url 链接会被合成到同一个 fetchlist。这样做的考虑是:当同时使用多个蜘蛛抓取的时候,不会产生重复抓取的现象。Nutch 遵循 Robots Exclusion Protocol, 你可以用robots.txt 定义保护私有网页数据不被抓去。
上面这个抓取工具的组合是Nutch的最外层的,你也可以直接使用更底层的工具,自己组合这些底层工具的执行顺序达到同样的结果。这就是Nutch吸引人的地方吧。下面把上述过程分别详述一下,括号内就是底层工具的名字:
-
创建一个新的WebDB (admin db -create)。
-
把开始抓取的跟Url 放入WebDb (inject)。
-
从WebDb的新 segment 中生成 fetchlist (generate)。
-
根据 fetchlist 列表抓取网页的内容 (fetch)。
-
根据抓取回来的网页链接url更新 WebDB (updatedb)。
-
重复上面3-5个步骤直到到达指定的抓取层数。
-
用计算出来的网页url权重 scores 更新 segments (updatesegs)。
-
对抓取回来的网页建立索引(index)。
-
在索引中消除重复的内容和重复的url (dedup)。
-
合并多个索引到一个大索引,为搜索提供索引库(merge)。
在创建了一个新的WebDB后,抓取循环 generate/fetch/update 就根据 最先第二步指定的根 url 在一定周期下自动循环了。当抓取循环结束后,就会生成一个最终的索引。从第7步到第10步。
需要说明的是:上面第 8 步中每个 segment 的索引都是单独建立的,之后才消重(第9步)。第10步就是大功告成,合并单独的索引到一个大索引库。
Dedup 工具可以从 segment 的索引中去除重复的url。因为 WebDB 中不允许重复的url , 也就是说 fetchlist 中不会有重复的url,所以不需要对 fetchlist 执行 dedup 操作。上文说过,默认的抓取周期是30天,如果已经生成的旧 fetch 没有删除,而又生成了新的fetch 这是还是会出现重复的url的。当只有一个抓取程序运行的时候是不会发生上述情况的。
从上面的介绍可以看出,一般情况下我们只要从头执行的程序就可以了,不需要接触底层的工具。但是搜索引擎有很多“意外”,很多的时间需要花费在维护上,所以底层的工具也是需要掌握的。我将会在下文给你演示如何运行上述过程。
开篇说过,本文是面向一个中型的搜索引擎的,如果做像百度这样的抓取互联网数据的引擎,你就需要参考下面的资源。
资源列表:
Nutch project page Nutch项目的大本营,想必大家都知道。
2、邮件列表: nutch-user 和 nutch-dev
3、在写本文的时候 Map Reduce 已经放到nutch的svn中了,不过还不是发布版本。我记得是Doug Cutting 在签入完 MapReduce 后就去度假了,呵呵。
更多资源:
Nutch tutorial还有一个好消息,写过Eclipse Plugin 的人都知道,Eclipse 架构的强大之处,Nutch 的Plugin 也是基于Eclipse 的,不过现在的版本是 2.0 。详情看这里 PluginCentral
search option
Building Nutch: Open Source Search
Nutch: A Flexible and Scalable Open Source Web Search Engine
原文地址:
http://today.java.net/pub/a/today/2006/01/10/introduction-to-nutch-1.html
分享到:
相关推荐
( Nutch,第1部分:爬行(译文) ( Nutch,第1部分:爬行(译文)
nutch入门经典翻译1:Introduction to Nutch, Part 1: Crawling
Nutch,第2部分:搜索(译文) Nutch,第2部分:搜索(译文)
nutch平台的详细搭建过程 配置环境 抓取 建立索引 查看结果
一、org.apache.nutch.crawl.Injector: 1,注入url.txt 2,url标准化 3,拦截url,进行正则校验(regex-urlfilter.txt) 4,对符URL标准的url进行map对构造, CrawlDatum>,在构造过程中给CrawlDatum初始化得分...
当前项目基于Nutch 1.X系列已停止更新维护,转向Nutch 2.x系列版本的新项目:http://www.oschina.net/p/nutch-ajax 项目简介 基于Apache Nutch 1.8和Htmlunit组件,实现对于AJAX加载类型页面的完整页面内容...
NULL 博文链接:https://chenhua-1984.iteye.com/blog/380779
Windows下使用Eclipse配置Nutch2图文详解
介绍 Nutch 的背景知识,包括 Nutch 架构,爬虫和搜索器。然后以开发一个基于 Nutch 的实际应用为例向读者展示如何使用 Nutch 开发自己的搜索引擎。在该示例中,首先带领读者开发一个作为 Nutch 爬虫抓取的目标网站...
Nutch2.3.1 环境搭建 Nutch2.3.1 环境搭建 Nutch2.3.1 环境搭建 亲测可用,我自己安装和搭建过程的记录文档
nutcher致力于为nutch提供一个较新的中文教程和文档,供开发者学习。 github地址: https://github.com/CrawlScript/nutcher 目录: Nutch教程——导入Nutch工程,执行完整爬取 ...
Linux下Nutch分布式配置 使用:分布式爬虫、索引、Nutch搜索本地数据、Nutch搜索HDFS数据。
Nutch1.7二次开发培训讲义 之 腾讯微博抓取分析
nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据
Nutch 是一个开源的、Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。 目 录 1. nutch简介...1 1.1什么是nutch..1 1.2研究nutch的原因...1 1.3 nutch的目标..1 1.4 nutch VS lucene.....2 2....
1.1 Nutch 基本原理 1.1.1 Nutch 基本组成 1.1.2 Nutch 工作流程 1.2 Nutch 流程详解 1.2.1 Nutch 数据流程 1.2.2 Nutch 流程分析
资源名称:Nutch相关框架视频教程资源目录:【】Nutch相关框架视频教程1_杨尚川【】Nutch相关框架视频教程2_杨尚川【】Nutch相关框架视频教程3_杨尚川【】Nutch相关框架视频教程4_杨尚川【】Nutch相关框架视频教程5_...
nutch部分网页乱码BUG修正,有代码和详细修改说明
Nutch 解析器parse部分代码笔记