ImageVerifierCode 换一换
你正在下载:

nutch.docx

[预览]
格式:DOCX , 页数:14 ,大小:29.28KB ,
资源ID:11345874      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11345874.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(nutch.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

nutch.docx

1、nutchNutch入门蒋阳 目 录 1. nutch简介.1 1.1什么是nutch. .1 1.2研究nutch的原因.1 1.3 nutch的目标.1 1.4 nutch VS lucene.2 2. nutch初体验.4 2.1局域网抓取.4 2.1.1 配置nutch.4 2.1.2 启动下载.4 2.1.3 下载流程分析.5 2.2 下载多个网站.6 2.3 nutch互联网抓取.72.3.1 下载列表获取.7 2.3.2 下载大量网站.7 2.4 结果检测.82.4.1 网页内容检索.83. nutch基本原理分析.8 3.1 nutch的基本组成.8 3.2 nutch工作流程

2、.8 1. nutch简介1.1 什么是nutch Nutch 是一个开源的、Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。1.2 研究nutch的原因可能有的朋友会有疑问,我们有google,有XX,为何还需要建立自己的搜索引擎呢?这里我列出2点原因:(1) 透明度:nutch是开放源代码的,因此任何人都可以查看他的排序算法是如何工作的。商业的搜索引擎排序算法都是保密的,我们无法知道为什么搜索出来的排序结果是如何算出来的。更进一步,一些搜索引擎允许竞价排名,比如XX,这样的索引结果并不是和站点内容相关的。因此 nutch 对学术搜索和政府类站点的搜索来说,是个好选择

3、,因为一个公平的排序结果是非常重要的。 (2) 扩展性:你是不是不喜欢其他的搜索引擎展现结果的方式呢?那就用 Nutch 写你自己的搜索引擎吧。 Nutch 是非常灵活的:他可以被很好的客户订制并集成到你的应用程序中,使用Nutch 的插件机制,Nutch 可以作为一个搜索不同信息载体的搜索平台。当然,最简单的就是集成Nutch到你的站点,为你的用户提供搜索服务。1.3 nutch的目标nutch致力于让每个人能很容易, 同时花费很少就可以配置世界一流的Web搜索引擎. 为了完成这一宏伟的目标, nutch必须能够做到: 每个月取几十亿网页。 为这些网页维护一个索引。 对索引文件进行每秒上千次

4、的搜索。 提供高质量的搜索结果。 以最小的成本运作。这将是一个巨大的挑战。1.4 nutch VS lucene简单的说: Lucene 不是完整的应用程序,而是一个用于实现全文检索的软件库。Nutch 是一个应用程序,可以以 Lucene 为基础实现搜索引擎应用。Lucene为 Nutch 提供了文本索引和搜索的API。一个常见的问题是;我应该使用Lucene还是Nutch?最简单的回答是:如果你不需要抓取数据的话,应该使用Lucene。常见的应用场合是:你有数据源,需要为这些数据提供一个搜索页面。在这种情况下,最好的方式是直接从数据库中取出数据并用Lucene API建立索引。2. nut

5、ch初体验Nutch 的爬虫有两种方式 爬行企业内部网(Intranet crawling):针对少数网站进行,用 crawl 命令。 爬行整个互联网:使用低层的 inject, generate, fetch 和 updatedb 命令,具有更强的可控制性。2.1 局域网抓取2.1.1 配置nutch:打开NUTCH的配置文件nutch-1.0conf,修改URL过滤规则文件“crawl-urlfilter.txt”,该文件以正则表达式来限定入口网站内哪些URL需要下载,修改内容如下:# accept hosts in MY.DOMAIN.NAME+http:/127.0.0.1:8080/

6、打开NUTCH的配置文件nutch-1.0confnutch-site.xml找到属性为http.agent.name的属性项,修改VALUE值作为抓取网站的名称,修改内容 如下: http.agent.name localweb localweb 在nutch-1.0下新建一个weburls.txt,内容为“http:/127.0.0.1:8080/mmsadmin/”2.1.2 启动下载 基本配置文件完成只是更改了nutch网络蜘蛛的运行参数,并不能让网络蜘蛛自动运行起来,去完成下载工作,具体操作步骤如下:(1) 进入到nutch得根目录。(2) 输入bin/nutch crawl web

7、urls.txt -dir localweb -depth 3 -topN 100 -threads 1后回车。dir:指定存放 爬行结果的目录,本次结果存放在localweb目录中。-depth 3:表面需要抓取页面深度为3层的内容。-topN 100:指明只抓取每层前100个URL。-thread 1:指定crawl只采取一个下载线程进行下载。 (3) 爬行完后会在NUTCH根目录创建localweb目录,爬行过程得到的结果存放在这个目录中,默认情况系统会记录工作日志nutch-1.0logshadoop.log (4) 修改nutch-1.0confnutch-site.xml文件,增加

8、检索目录属性指定检索器读取的数据目录,修改内容如下 searcher.dir D:sinoyangnutch-1.0localweb (5)执行bin/nutch org.apache.nutch.searcher.NutchBean XX命令检索包含XX的网页 现在整个下载顺利完成了,需要注意的是,在执行crawl命令时,nutch目录下不能存在命令中使用的localweb目录,否则会报错2.1.3 下载流程解析 crawl命令调用injector把weburls.txt加入到数据库,调用generator生成数据段,启动fetcher线程实际下载网页。crawldb update把网页内的

9、链接加入到下载数据库,下载实例测试中,创建weburls.txt文件,存放下载的URL列表,下载过程中使用nutch crawl命令,附带的参数是存放下载链的weburls.txt文件。以dir引入的下载后存放的路径localweb,下载深度为-depth 3,表面下载3层内容。-topN 100表面下载前100个页面后结束。-thread 1表示使用一个独立下载线程下载,整体命令如下bin/nutch crawl weburls.txt -dir localweb -depth 3 -topN 100 -threads 1 nutch的局域网下载采用广度优先策略,先把二级页面抓取下来,然后进

10、行第三级页面的抓取,超过3级的不会被抓取。系统调用LinkDb建立网页间的链接关系,调用Indexer为每个数据段建立独立索引,调用merging segments 把不同数据段合并为一个统一索引。 打开抓取程序自动建立的localweb目录,可以看到crawldb,segments等子目录,分别存放下载的数据。Localweb 目录下,包括5个文件夹,每个文件夹分别 存放不同的内容。Crawldb 目录存放下载的URL,以及下载的日期,用来页面更新检查时间。Linkdb 目录存放URL的互联关系,是下载完成后分析得到的。Segments:存放抓取的页面,下面目录的个数也获取的页面层数有关系,

11、通常没一层会创建一个独立目录。子目录名称为时间,便于管理,每个子目录里有6个文件夹分别存放内容。Content:每个下载URL的状态 crawl_fetch:每个下载URL的状态crawl_generate:等待下载URL集合crawl_parse:包含用来更新Crawldb的外部链接parse_data:包含每个URl解析出的外部链接和元数据parse_text:包含每个解析过的URL文本indexes: 存放每次下载的独立索引目录index: 符合luence格式的索引目录,是indexes里面所有index合并后的完整索引2.2 下载多个网站局域网抓取过于简单,没有体现出网络蜘蛛在多个网

12、站情况下是如何工作的,下面的任务将从多个互联网站点下载数据,建立索引。多个站点的下载足以满足一个小型垂直搜索引擎的需求。操作基本上与局域网下载相同,只是URL列表出现差别。下面以下载汽车新闻报道的相关内容为例子。(1) 进入在nutch-1.0下新建一个multiurls.txt,内容为(2) 打开NUTCH的配置文件nutch-1.0conf,修改URL过滤规则文件“crawl-urlfilter.txt”,该文件以正则表达式来限定入口网站内哪些URL需要下载,修改内容如下:# accept hosts in MY.DOMAIN.NAME+# skip everything else-.执行

13、bin/nutch crawl multiurls.txt -dir multiweb-depth 3 -topN 100 -threads 5(3) 等待几分钟,完成下载,同时建立索引。(4) 修改nutch-1.0confnutch-site.xml文件,增加检索目录属性指定检索器读取的数据目录,修改内容如下searcher.dir D:sinoyangnutch-1.0 multiweb (5) 执行bin/nutch org.apache.nutch.searcher.NutchBean XX 检索包含SUV的网页(6) 局域网,多网站的下载模式都是采用广度优先算法完成下载的,检索后得

14、到的数据经过索引合并,可以通过统一的借口进行检索,得到每个网站内容,网页内容ianshi包括一定的排序次序。局域网木偶师适合针对少数网站建立一个小型垂直搜索系统,也可以实现企业网站的站内检索系统,或针对某领域网站的内容检测系统。2.3 Nutch互联网抓取 Nutch的互联网抓取模式与局域网模式差别很大,局域网下载模式使用CRAWL命令,操作简单,但是也带来了限制,互联网模式使用了更底层的一系列命令,更灵活的控制手段。2.3.1 下载列表获取全网爬行意指在整个互联网进行爬行,这通常需要多台服务器跑上几周的时间才能完成,这对于我们的测试而言是不必要的。因此,我们现在所做的所谓全网爬行,只是模拟一

15、下。nutch文档中是从DMOZ 获取一个URL集合,然后取一个子集进行处理。不过该文档有300多M, 解压缩后接近2G,使用DmozParser工具可以从文件中随机抽取部分数据,生成文件列表,操作如下:bin/nutch org.apache.nutch.tools.DmozParser content.rdf.u8 isubset 3000 dmozurls命令执行结果是nutch根目录下生成dmozurls文件(文件也不小,有146M,有4446480个URl)该文件可以用来作为入口地址添加到下载库中。由于dmozurls文件里面包含大量的国外网站,访问时候比较慢,所以采用另一种方式,将

16、要测试的网站URl放入名为vipurls.txt中。2.3.2 下载大量网站 入口URL准备好以后,下一步就是导入NUTCH系统,完成下载工作具体操作如下(1) 进入在nutch-1.0下新建一个vipcrawl目录。(2) 复制vipurls.txt到nutch-1.0根目录,利用它向vipcrawl数据库里添加初始化URL,命令如下bin/nutch inject vipcrawl/crawldb vipcrawl.txt(3) http.agent.namebookagent bookagent (4) 利用crawldb中已经注入的URL下载列表,调用generate命令创建一个新的数

17、据段,存放在vipcrawl目录下。bin/nutch generate vipcrawl/crawldb vipcrawl/segments(5) 查看segments目录下最新生成的日期时间文件夹。需要根据自己机器显示的最新目录,修改命令行中的目录参数。根据文件夹下生成的下载列表获取页面内容bin/nutch fetch vipcrawl/segments/20091217141251(6) 从已经下载的段数据里面获取URL链接,更新crawldb库里的内容。bin/nutch updatedb vipcrawl/crawldb vipcrawl/segments/200912171412

18、51(7) 循环执行(4)(5)(6)下载页面,直到crawldb的列表完成或者全部达到网页深度,此处的深度控制需要通过循环次数来控制。(8) 调用analyze命令分析已经下载网页的内容Bin/nutch updated vipcrawl/crawldb vipcrawl/segments/20091217141251(9) 根据webdb内容,修改分段的权值和外部链接Bin/nutch updatesegs(10) 索引页面内容Bin/nutch index执行需要一定时间,具体时间 由网络状况决定,完成以上命令组合之后,一个简化的互联网数据就下载完成了。2.4 Nutch结果检测 由于抓

19、取的结果页面内容已经被分析处理,无法直观查看下载的网页内容。最简单的方法是通过检索查看页面的关键词是否存在。2.4.1 网页内容检索搜索的最终目标是为用户提供检索服务。上一节的几种下载模式的下载过程,除了基本的网页获取操作,还调用了索引命令。实际上几经完成了搜索引擎的整个检索准备工作。我们把NUTCH根目录下的nutch-1.0.war文件放到TOMCAT服务器下,然后修改配置文件,指定索引路径。启动TOMCAT,就可以在就可以运行了。3. nutch基本原理分析3.1 nutch的基本组成 nutch作为一个搜索引擎,其基本组成也同其他搜索引擎一样。简单的说,包括爬虫,索引和搜索三部分。3.

20、2 nutch工作流程在前面的nutch初体验中,我们就是按照nutch的工作流程来进行的,现在总结如下: 1) 建立初始URL集2) 将URL集注入crawldb数据库-inject 3) 根据crawldb数据库创建抓取列表-generate 4) 执行抓取,获取网页信息-fetch 5) 更新数据库,把获取到的页面信息存入数据库中-updatedb 6) 重复进行35的步骤,直到预先设定的抓取深度。-这个循环过程被称为“产生/抓取/更新”循环 7) 根据sengments的内容更新linkdb数据库-invertlinks8) 建立索引-index 9) 用户通过用户接口进行查询操作10

21、) 将用户查询转化为lucene查询11) 返回结果其中,16属于爬虫部分;7、8属于索引部分;911属于查询部分。(注: 进行内部网爬行时执行的crawl操作,实质上也是执行的以上一系列操作,这一点从它的抓取日志上可以看出) 4. nutch工作流程分析4.1 爬虫5.1.1 工作策略 其工作策略一般则可以分为累积式抓取(cumulative crawling)和增量式抓取(incremental crawling)两种。 累积式抓取是指从某一个时间点开始,通过遍历的方式抓取系统所能允许存储和处理的所有网页。在理想的软硬件环境下,经过足够的运行时间,累积式抓取的策略可以保证抓取到相当规模的网

22、页集合。但由于Web数据的动态特性,集合中网页的被抓取时间点是不同的,页面被更新的情况也不同,因此累积式抓取到的网页集合事实上并无法与真实环境中的网络数据保持一致。 与累积式抓取不同,增量式抓取是指在具有一定量规模的网络页面集合的基础上,采用更新数据的方式选取已有集合中的过时网页进行抓取,以保证所抓取到的数据与真实网络数据足够接近。进行增量式抓取的前提是,系统已经抓取了足够数量的网络页面,并具有这些页面被抓取的时间信息。 面向实际应用环境的网络蜘蛛设计中,通常既包括累积式抓取,也包括增量式抓取的策略。累积式抓取一般用于数据集合的整体建立或大规模更新阶段;而增量式抓取则主要针对数据集合的日常维护

23、与即时更新。 在确定了抓取策略之后,如何从充分利用网络带宽,合理确定网页数据更新的时间点就成了网络蜘蛛运行策略中的核心问题。 总体而言,在合理利用软硬件资源进行针对网络数据的即时抓取方面,已经形成了相对比较成熟的技术和实用性解决方案,这方面目前所需解决的主要问题,是如何更好的处理动态网络数据问题(如数量越来越庞大的Web2.0数据等),以及更好的根据网页质量修正抓取策略的问题。 5.1.2 工作流程分析 1) 建立初始URL集初始URL集的建立有两种方式:超链接和站长提交超链接:机器人程序根据网页链到其他网页中的超链接,就像日常生活中所说的“一传十,十传百”一样,从少数几个网页开始, 连到数据库上所有到其他网页的链接

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1