`
zhanzhan02
  • 浏览: 69595 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【九度原创】(连载文章)爬虫NUTCH 第一篇——简介

阅读更多
NUTCH  简介
nutch   

Nutch是一个由Java实现的,刚刚诞生开放源代码(open-source)的web搜索引擎。

  尽管Web搜索是漫游Internet的基本要求, 但是现有web搜索引擎的数目却在下降. 并且这很有可能进一步演变成为一个公司垄断了几乎所有的web搜索为其谋取商业利益.这显然不利于广大Internet用户.
  Nutch为我们提供了这样一个不同的选择. 相对于那些商用的搜索引擎, Nutch作为开放源代码搜索引擎将会更加透明, 从而更值得大家信赖. 现在所有主要的搜索引擎都采用私有的排序算法, 而不会解释为什么一个网页会排在一个特定的位置. 除此之外, 有的搜索引擎依照网站所付的费用, 而不是根据它们本身的价值进行排序. 与它们不同, Nucth没有什么需要隐瞒, 也没有动机去扭曲搜索的结果. Nutch将尽自己最大的努力为用户提供最好的搜索结果.

Nutch必须能够做到  Nutch 致力于让每个人能很容易, 同时花费很少就可以配置世界一流的Web搜索引擎. 为了完成这一宏伟的目标, Nutch必须能够做到:
  * 每个月取几十亿网页
  * 为这些网页维护一个索引
  * 对索引文件进行每秒上千次的搜索
  * 提供高质量的搜索结果
  * 以最小的成本运作

Nutch主要分为两个部分  爬虫crawler和查询searcher。Crawler主要用于从网络上抓取网页并为这些网页建立索引。Searcher主要利用这些索引检索用户的查找关键词来产生查找结果。两者之间的接口是索引,所以除去索引部分,两者之间的耦合度很低。
  Crawler和Searcher两部分尽量分开的目的主要是为了使两部分可以分布式配置在硬件平台上,例如将Crawler和Searcher分别放在两个主机上,这样可以提升性能。

爬虫,Crawler  Crawler的重点在两个方面,Crawler的工作流程和涉及的数据文件的格式和含义。数据文件主要包括三类,分别是web database,一系列的segment加上index,三者的物理文件分别存储在爬行结果目录下的db目录下webdb子文件夹内,segments文件夹和index文件夹。那么三者分别存储的信息是什么呢?
  Web database,也叫WebDB,其中存储的是爬虫所抓取网页之间的链接结构信息,它只在爬虫Crawler工作中使用而和Searcher的工作没有任何关系。WebDB内存储了两种实体的信息:page和link。Page实体通过描述网络上一个网页的特征信息来表征一个实际的网页,因为网页有很多个需要描述,WebDB中通过网页的URL和网页内容的MD5两种索引方法对这些网页实体进行了索引。Page实体描述的网页特征主要包括网页内的link数目,抓取此网页的时间等相关抓取信息,对此网页的重要度评分等。同样的,Link实体描述的是两个page实体之间的链接关系。WebDB构成了一个所抓取网页的链接结构图,这个图中Page实体是图的结点,而Link实体则代表图的边。
  一次爬行会产生很多个segment,每个segment内存储的是爬虫Crawler在单独一次抓取循环中抓到的网页以及这些网页的索引。Crawler爬行时会根据WebDB中的link关系按照一定的爬行策略生成每次抓取循环所需的fetchlist,然后Fetcher通过fetchlist中的URLs抓取这些网页并索引,然后将其存入segment。Segment是有时限的,当这些网页被Crawler重新抓取后,先前抓取产生的segment就作废了。在存储中。Segment文件夹是以产生时间命名的,方便我们删除作废的segments以节省存储空间。
  Index是Crawler抓取的所有网页的索引,它是通过对所有单个segment中的索引进行合并处理所得的。Nutch利用Lucene技术进行索引,所以Lucene中对索引进行操作的接口对Nutch中的index同样有效。但是需要注意的是,Lucene中的segment和Nutch中的不同,Lucene中的segment是索引index的一部分,但是Nutch中的segment只是WebDB中各个部分网页的内容和索引,最后通过其生成的index跟这些segment已经毫无关系了。

Crawler工作流程  在分析了Crawler工作中设计的文件之后,接下来我们研究Crawler的抓取流程以及这些文件在抓取中扮演的角色。Crawler的工作原理:首先Crawler根据WebDB生成一个待抓取网页的URL集合叫做Fetchlist,接着下载线程Fetcher根据Fetchlist将网页抓取回来,如果下载线程有很多个,那么就生成很多个Fetchlist,也就是一个Fetcher对应一个Fetchlist。然后Crawler用抓取回来的网页更新WebDB,根据更新后的WebDB生成新的Fetchlist,里面是未抓取的或者新发现的URLs,然后下一轮抓取循环重新开始。这个循环过程可以叫做“产生/抓取/更新”循环。
  指向同一个主机上Web资源的URLs通常被分配到同一个Fetchlist中,这可防止过多的Fetchers对一个主机同时进行抓取造成主机负担过重。另外Nutch遵守Robots Exclusion Protocol,网站可以通过自定义Robots.txt控制Crawler的抓取。
  在Nutch中,Crawler操作的实现是通过一系列子操作的实现来完成的。这些子操作Nutch都提供了子命令行可以单独进行调用。下面就是这些子操作的功能描述以及命令行,命令行在括号中。
  1. 创建一个新的WebDb (admin db -create).
  2. 将抓取起始URLs写入WebDB中 (inject).
  3. 根据WebDB生成fetchlist并写入相应的segment(generate).
  4. 根据fetchlist中的URL抓取网页 (fetch).
  5. 根据抓取网页更新WebDb (updatedb).
  6. 循环进行3-5步直至预先设定的抓取深度。
  7. 根据WebDB得到的网页评分和links更新segments (updatesegs).
  8. 对所抓取的网页进行索引(index).
  9. 在索引中丢弃有重复内容的网页和重复的URLs (dedup).
  10. 将segments中的索引进行合并生成用于检索的最终index(merge).

Crawler详细工作流程是  在创建一个WebDB之后(步骤1), “产生/抓取/更新”循环(步骤3-6)根据一些种子URLs开始启动。当这个循环彻底结束,Crawler根据抓取中生成的segments创建索引(步骤7-10)。在进行重复URLs清除(步骤9)之前,每个segment的索引都是独立的(步骤8)。最终,各个独立的segment索引被合并为一个最终的索引index(步骤10)。
  其中有一个细节问题,Dedup操作主要用于清除segment索引中的重复URLs,但是我们知道,在WebDB中是不允许重复的URL存在的,那么为什么这里还要进行清除呢?原因在于抓取的更新。比方说一个月之前你抓取过这些网页,一个月后为了更新进行了重新抓取,那么旧的segment在没有删除之前仍然起作用,这个时候就需要在新旧segment之间进行除重。
  Nutch和Lucene
  Nutch是基于Lucene的。Lucene为Nutch提供了文本索引和搜索的API。
  一个常见的问题是:我应该使用Lucene还是Nutch?
  最简单的回答是:如果你不需要抓取数据的话,应该使用Lucene。
  常见的应用场合是:你有数据源,需要为这些数据提供一个搜索页面。在这种情况下,最好的方式是直接从数据库中取出数据并用Lucene API 建立索引。
  在你没有本地数据源,或者数据源非常分散的情况下,应该使用Nutch。


具体网址:http://t.jobdu.com/thread-1548-1-1.html
分享到:
评论

相关推荐

    2019最新三维九度分销源码下载

    总的来说,"2019最新三维九度分销源码下载"是一个包含多层分销、易于二次开发的电商解决方案,对于想要快速搭建分销网络的企业或开发者来说,这是一个高效且节约成本的选择。通过深入理解和合理利用这个源码,可以...

    九度-剑指Offer习题全套答案

    使用vs2010编写,直接用vs2010打开加压后的.sln文件即可看到所有的代码,右键点击某一个cpp-“属性”-“从生成中排除”-“否”,即可运行该cpp,注意相应其他cpp该属性要设置为“是”。九度OJ上面的剑指Offer习题...

    Thinkphp三维九度分销新玩法微信三三复制直销系统源码.zip

    【标题】"Thinkphp三维九度分销新玩法微信三三复制直销系统源码"涉及到的是一个基于ThinkPHP框架开发的微信分销系统,该系统采用了一种独特的“三维九度”分销模式,即三三复制直销策略。在互联网营销中,这种模式...

    九度OJ-题目1509:树中两个结点的最低公共祖先的测试数据

    1. **深度优先搜索(DFS)**:可以使用两次DFS,第一次找到两个节点,第二次从根节点开始遍历,记录每次访问的节点,当遇到第一次出现的节点时,这个节点就是LCA。这种方法的时间复杂度为O(n)。 2. **层次遍历(BFS...

    九度智能seo优化软件 v12.5.zip

    九度智能seo优化软件是一款针对搜索引擎的点击类软件。软件适用于百度、谷歌、360搜索、搜狗、搜搜、淘宝、天猫等等搜索引擎,可以用来提高来自搜索结果中的点击流量,借以提升网站在搜索中的排名、提高知名度,也...

    九度淘宝直通车点击软件 v9.0.zip

    由于九度搜索点击软件完全模仿人的自然行为进行点击,所以软件工作时,占用一台电脑,在挂机的同时,不能干其他的事情。建议在闲暇时挂机,或有多余的电脑挂机,也可以在自己的电脑上,安装虚拟机,在虚拟机上运行...

    9000元定制的三维九度分销新玩法源码

    【三维九度分销新玩法源码】是一种在电商和网络营销领域常见的销售策略,它结合了三维营销和九度分销的概念,旨在通过多层次的分销体系来扩大销售网络,提高产品的覆盖范围,并激励分销商积极参与销售活动。...

    九度搜索引擎点击优化软件 v10.0.zip

    由于九度搜索点击软件完全模仿人的自然行为进行点击,所以软件工作时,占用一台电脑,在挂机的同时,不能干其他的事情。建议在闲暇时挂机,或有多余的电脑挂机,也可以在自己的电脑上,安装虚拟机,在虚拟机上运行...

    九度OJ八皇后问题

    九度OJ八皇后问题,主要是主对角线和副对角线的判断上面优化。在九度1140上面已经AC

    九度1006ZOJ问题

    ZJU考研机试真题 九度1006ZOJ问题

    九度火鸟的许愿树

    《九度火鸟的许愿树》是一款基于Web的贺卡制作系统,其核心功能包括数据连接、数据删除以及数据库管理。在这个系统中,conn.asp是用于建立与数据库连接的关键文件,用户可以通过修改该文件来设定站点的数据源,包括...

    计算机机试指南九度OJ机试题目解析复试机试参考.docx

    【计算机机试指南九度OJ机试题目解析】这篇文档是针对计算机考研学生的机试复习资料,主要汇总了九度在线判题系统(九度OJ)中的常见机试题目类型和解题策略。虽然九度OJ已经下线,但这份文档仍然具有参考价值。以下...

    九度智能SEO优化软件 v12.5

    九度智能SEO优化软件是九度搜索引擎点击优化软件重新开发版,本是针对搜索引擎的SEO优化类软件,2016年10月正式上线。软件可像真人点击一样,自动点击百度、谷歌、360搜索、搜狗、搜搜、淘宝、天猫等搜索引擎内的...

    九度淘宝直通车点击软件 v3.3

    建议在闲暇时挂机,或有多余的电脑挂机,也可以在自己的电脑上,安装虚拟机,在虚拟机上运行挂机软件,工作和挂机两不误出色功能1.由全国各地众多挂机者自动点击,流量来源分布广泛而合理;2.点击逼真,点击过程完全...

    九度1004Median

    ZJU考研机试真题 九度1004Median

    九度算法用C++实现排序功能

    九度算法实现EXCEL排序 Excel可以对一组纪录按任意指定列排序。现请你编写程序实现类似功能。 对每个测试用例,首先输出1行“Case i:”,其中 i 是测试用例的编号(从1开始)。随后在 N 行中输出按要求排序后的结果...

    九度内推 ACM 解题报告

    ### 九度内推ACM解题报告知识点详解 #### A. 液晶屏裁剪 **问题描述:** 本题是一道简单的数学题目,主要考察如何根据给定的长宽比例,调整到合适的尺寸。题目给出的是一个显示器的裁剪问题,需要将显示器裁剪成一...

    九度oj 题目1369:字符串的排列 剑指offer

    九度oj 题目1369:字符串的排列 剑指offer里面的题目 自己写的代码,供参考!

Global site tag (gtag.js) - Google Analytics