`
txf2004
  • 浏览: 7064306 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

介绍 Nutch 第一部分:抓取过程详解(翻译2)

阅读更多

介绍 Nutch 第一部分:抓取过程详解(2)

通过上文现在我们有了一些基本的概念了,现在应该接触实际的操作了,因为懂得原理和实践还是有很大差距的。

抓取是一个循环的过程:抓取蜘蛛从WebDB中生成了一个 fetchlist 集合;抽取工具根据fetchlist从网络上下载网页内容;蜘蛛程序根据抽取工具发现的新链接更新WebDB;然后再生成新的fetchlist;周而复始。(注:蜘蛛是分两个部分的。有一次在公司的一个讨论会上还就此争论了一番,google也是如此,以后会给出例子。)这个抓取循环在nutch中经常指: generate/fetch/update 循环。

一般来说同一域名下的 url 链接会被合成到同一个 fetchlist。这样做的考虑是:当同时使用多个蜘蛛抓取的时候,不会产生重复抓取的现象。Nutch 遵循 Robots Exclusion Protocol, 你可以用robots.txt 定义保护私有网页数据不被抓去。

上面这个抓取工具的组合是Nutch的最外层的,你也可以直接使用更底层的工具,自己组合这些底层工具的执行顺序达到同样的结果。这就是Nutch吸引人的地方吧。下面把上述过程分别详述一下,括号内就是底层工具的名字:

  1. 创建一个新的WebDB (admin db -create)。

  2. 把开始抓取的跟Url 放入WebDb (inject)。

  3. 从WebDb的新 segment 中生成 fetchlist (generate)。

  4. 根据 fetchlist 列表抓取网页的内容 (fetch)。

  5. 根据抓取回来的网页链接url更新 WebDB (updatedb)。

  6. 重复上面3-5个步骤直到到达指定的抓取层数。

  7. 用计算出来的网页url权重 scores 更新 segments (updatesegs)。

  8. 对抓取回来的网页建立索引(index)。

  9. 在索引中消除重复的内容和重复的url (dedup)。

  10. 合并多个索引到一个大索引,为搜索提供索引库(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-usernutch-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部分:爬行(译文)

    nutch入门经典翻译1:Introduction to Nutch, Part 1: Crawling

    《Nutch入门经典翻译1:Introduction to Nutch, Part 1: Crawling》一文深入介绍了Nutch这一开源网络爬虫框架的基本概念、体系结构及其关键组件,为初学者提供了全面的理解视角。以下是对该文章核心知识点的详细解读...

    lucene2.4+nutch学习笔记三:lucene 在多个文本文档里找出包含一些关键字的文档

    Nutch是一个开源的网络爬虫项目,用于抓取互联网上的网页并建立索引。它集成了Lucene,实现了大规模网页的搜索引擎功能。Nutch的工作流程包括: 1. **抓取**:通过URL种子开始,不断发现新的链接并下载网页。 2. **...

    大学毕设论文--nutch爬虫系统分析设计论文.doc

    本文将对Nutch爬虫系统进行详细的分析和设计,介绍Nutch的体系结构、抓取部分、配置文件分析等方面的知识点。 一、Nutch简介 Nutch是一个基于Java语言的开源爬虫系统,由Apache组织开发和维护。Nutch的主要特点是...

    开发基于 Nutch 的集群式搜索引擎

    Nutch的架构设计可以分为两个主要部分:抓取器(Crawler)和搜索器(Searcher)。抓取器负责抓取网页内容,而搜索器则负责处理用户的查询请求。具体来说: 1. **抓取器**:抓取器的工作流程如下: - 从一个或多个...

    Nutch配置环境\Nutch1[1].4_windows下eclipse配置图文详解.docx

    Apache Nutch 是一个开源的网络爬虫框架,用于抓取互联网上的网页并生成索引,以便于搜索引擎使用。本文将详细介绍如何在Windows环境下配置Nutch 1.4,并使用Eclipse进行开发。以下是你需要知道的关键步骤: 1. **...

    nutch

    Nutch 的架构基于分治思想,整个抓取过程被分为多个步骤,包括种子页面生成、页面抓取、解析、存储、过滤、评分、索引和搜索。这些步骤在 Hadoop 的 MapReduce 框架下运行,确保了高效性和可扩展性。 1. **种子页面...

    Nutch2.3.1 环境搭建

    Nutch2.3.1是Apache Nutch的一个稳定版本,它是一个开源的网络爬虫框架,主要用于抓取、解析和索引互联网上的网页内容。在本文中,我们将深入探讨如何搭建Nutch2.3.1的运行环境,以便进行网页抓取和分析。 **一、...

    nutch爬虫系统分析.doc

    1.Fetcher配置:负责配置抓取部分的参数,包括抓取的URL、抓取的深度、抓取的间隔等。 2.Parser配置:负责配置解析部分的参数,包括解析的模式、解析的深度等。 3.Indexer配置:负责配置索引部分的参数,包括索引的...

    nutch帮助文档;nutch学习 入门

    作为初学者,了解和掌握Nutch的相关知识是探索搜索引擎技术的第一步。本篇将深入探讨Nutch的基本概念、功能、架构以及如何入门学习。 1. **Nutch简介** Nutch是一个高度可扩展的开源搜索引擎,它提供了网页抓取、...

    nutch爬虫系统分析设计论文.doc

    抓取部分是 Nutch 系统的核心组件之一,负责从互联网上爬取网页数据。该部分包括以下几个步骤: 1. inject:将爬取的任务 inject 到抓取队列中。 2. generate:生成抓取的 URL 列表。 3. fetch:从互联网上爬取网页...

    nutch使用&Nutch;入门教程

    “Nutch使用.pdf”和“Nutch入门教程.pdf”这两份文档将详细介绍如何从零开始使用Nutch,包括环境搭建、配置、启动爬虫、监控爬虫状态、查看抓取结果和索引数据等。通过这些教程,你可以快速掌握Nutch的基本操作,并...

    nutch2.2.1

    Nutch 2.2.1 是一个开源的网络爬虫项目,主要用于收集、索引和分析互联网上的数据。这个未编译的代码包是给那些对Nutch不太熟悉的开发者准备的,让他们有机会深入理解Nutch的工作原理并进行自定义开发。 Nutch的...

    nutch入门.pdf

    这一部分详细介绍了如何配置Nutch以及Tomcat,执行抓取命令,并对结果进行测试。其中,爬行企业内部网涉及到IntranetRecrawl,而爬行全网则详细讨论了爬行官方网址和中文网址。 Nutch基本原理分析包括Nutch的基本...

Global site tag (gtag.js) - Google Analytics