Nutch搜索引擎数据获取

w523399859 贡献于2013-08-30

作者 island  创建于2010-03-15 00:48:00   修改者User  修改于2013-08-08 10:40:00字数6664

文档摘要:1基本原理:1.1体系结构设计:网络蜘蛛一般都具有3模块:HTTP下载模块,链接分析模块,下载控制模块。HTTP下载模块利用http网络协议下载,获取并存储内容。链接分析模块能提取网页中的超链接,用来获得后续页面入口。下载控制模块控制页面访问次序、更新策略、访问队列调度等工作。工作流程:访问URL数据库,读取URL入口地址,生成内存访问队列。寻找空闲的HTTP下载模块,分配URL,启动下载任务。HTTP下载模块访问互联网,得到的网页内容放入结果队列。
关键词:

Nutch搜索引擎数据获取 1 基本原理: 1.1 体系结构设计: 网络蜘蛛一般都具有3模块:HTTP下载模块,链接分析模块,下载控制模块。 HTTP下载模块利用http网络协议下载,获取并存储内容。 链接分析模块能提取网页中的超链接,用来获得后续页面入口。 下载控制模块控制页面访问次序、更新策略、访问队列调度等工作。 工作流程: 1、 访问URL数据库,读取URL入口地址,生成内存访问队列。 2、 寻找空闲的HTTP下载模块,分配URL,启动下载任务。 3、 HTTP下载模块访问互联网,得到的网页内容放入结果队列。 4、 定期保存到网页数据库,为后续索引做准备。 5、 链接分析模块提取页面内的新连接,存入URL数据库等待下载。 6、 重复上述过程直到全部下载完成,等待新的任务。 1.2 访问策略与算法: 网络蜘蛛访问一个网站,一般入口页面为网站的首页或者sitemap页面。从这个页面通过链接分析,寻找并访问后续页面地址。 网络蜘蛛对网站的访问有深度限制,一般在3~5层,遍历策略一般采用广度优先算法和深度优先算法。 从应用角度看,广度优先能尽可能的比较平均的获取不同网站的内容,比较适合于大型搜索引擎系统初期网页库的建立;深度优先在设计师比较容易,对垂直搜索或者站内搜索比较合适。 2 Nutch网络蜘蛛 2.1 概述 Nutch系统包含一个功能强大的网络蜘蛛。这个网络蜘蛛的核心是Crawl工具。这个工具根据事先设定的入口URL列表,不断地自动下载页面,知道满足系统预设的停止条件。Crawl本身是另外一系列网页下载相关工具的组合。 Nutch主要的5个操作命令: Admin:用来创建一个新的WEB数据库,WEB数据库实际上就是URL数据库,存储了网络爬虫抓取的网页信息和网页之间的链接信息。 Inject:添加数据下载的入口链接。首先读取给定的纯文本格式文件,获取URL列表,作为入口地址添加到已有的web数据库中。 Generate:生成待下载URL列表。按照WEB数据库格式提取未下载的URL,以fetchlist形式给出,为下载做好准备。 Fetch:按照HTTP协议访问互联网,获取网页数据的具体内容。下载过程有下载列表和操作参数控制,直到下载完毕。 Updatedb:用来添加网页下一层链接的URL。从已经下载文件中获取URL链接,更新web数据库,添加到已有的web数据库。 下载的数据存储主要以目录文件形式存放,具体内容包括WEB数据库、数据段(segments)和数据索引。 1、web数据库(web db) WEB数据库实际上就是URL数据库,存储了网络爬虫抓取的网页信息和网页之间的链接信息。Web数据库之为网络爬虫服务,并不参与搜索引擎后面的检索和加载。 2、数据段(segments) 数据段存放网络爬虫每一次抓取使用的待下载列表、以获得的网页内容和本次内容的索引。数据段的具体内容会随着重新抓取更新。数据段存储的数据内容主要饱和3中类型: 待下载列表(fecthlist)是从web数据库中得到的,用来指定贮备抓取的网页地址。 已获得的网页内容(fetcher output)是下载的具体网页内容,网页内容采用索引方式存放的数据段中。 数据段索引(index)采用Lucene格式,是当前已经下载内容的索引。 3、数据索引 数据索引时数据段索引的合并和汇集。树荫的数据包含了系统所有的页面,以倒排索引的形式组织。 2.2 Nutch抓取模式分类 目前使用比较多的搜索引擎可以划分为3类:全网搜索引擎,垂直搜索引擎和企业搜索引擎。 全网搜索引擎对海量信息的收录数量比较关注,希望尽可能的抓取网页,避免遗漏重要网站。垂直搜索引擎对信息的实时性和内容的的精确性要求比较高,希望能尽快的针对性的下载信息,比较快的下载更新频率。企业搜索引擎主要考虑如何以尽量小的代价,完成指定网站的信息下载,建立几乎没有遗漏的本地文档检索系统。 为满足不同类型的需要,nutch的网络蜘蛛提供了两种工作模式:局域网抓取和互联网全网抓取。 局域网抓取采用单一命令完成网页下载,是只对数量较少的网站或者某一个网站进行的网页下载方式。 互联网抓取使用命令组合完成网页下载,是针对网页数量比较多或者直接从开放目录终不过得到的海量网站的下载方式。 3 Nutch局域网抓取 Nutch网络蜘蛛的工作机制非常清晰。首先读取文本文件,增加待下载的URL列表,然后根据配置文和命令行参数,启动下载线程,从目标网站下载网页,得到网页信息保存到本地存储结构中。 3.1 本地测试下载检索 1、启动tomcat服务。 2、打开nutch工作目录D:\nutch-0.9,创建weburls文件,文件中添加本次测试地址,作为网络蜘蛛抓取的网站入口地址,文件内容为: http://127.0.0.1:8888/examweb/index.htm(注:examweb文件存放在D:\Tomcat6.0\webapps\ROOT \examweb下,里面为本地测试准备的几个htm网页文件)。 3、打开nutch配置文件目录D:\nutch-0.9\conf,修改URL过滤规则文件crawl-urlfilter.txt。该文件使用正则表达式来限定入口网站内那些URL需要下载。 过滤规则中以“+”表示允许下载,以“*”表明0或者任意多个字符。具体修改如下:+^http://127.0.0.1:8888/ 表示允许下载当前站点内任何URL页面。 4、打开nutch配置文件目录D:\nutch-0.9\conf,修改nutch-site.xml文件。 修改如下: http.agent.name localweb.com localweb.com Value值作为被抓取网站的名称。本次抓取的网站名设置为localweb.com. 5、启动下载过程 5.1、执行Cygwin。 5.2、在Cygwin命令行中输入 cd /cygdrive/d/nutch-0.9,进入到Nutch目录 5.3、输入命令:bin/nutch crawl weburls.txt –dir localweb –depth 3 –topN 100 –threads 1 回车执行。命令行中参数指明了抓取行为。含义如下: dir指定存放爬行结果的目录。 -depth 3 表明需要抓取的页面深度为3层内容。 -topN 100 表明只抓取每一层的前N个URL,本次为每层前100个。 -threads 1 指定crawl只采用一个下载线程进行下载。 本次完成后会在Nutch根目录中建立localweb目录,存放爬行的结果。 5.4修改D:\nutch-0.9\conf下的nutch-site.xml文件,增加检索目录属性指定器,读取数据的目录,修改后文件内容如下: http.agent.name localweb.com localweb.com searcher.dir D:\nutch-0.9\localweb 5.5、Cygwin命令窗口下执行命令: bin/nutch org.apache.nutch.searcher.NutchBean hat 命令含义即为检索包含hat的网页。 如上述步骤能顺利完成,表明本地测试完成。 3.2、下载多个网站 多个网站下载和本地测试方式基本相同,需要修改个别规则。 1 在Nutch根目录中建立文本文件multiurls.txt文件,里面存放希望下载文件列表,自己测试的内容为: http://www.pcauto.com.cn/ http://www.xcar.com.cn/ http://auto.sina.com.cn/ http://www.chinacars.com/ http://www.autohome.com.cn/ http://www.cheshi.com.cn/ http://auto.sohu.com/ http://cn.autos.yahoo.com/ http://auto.qq.com/ http://auto.tom.com/ http://www.imau.edu.cn 2修改URL过滤规则文件crawl-urlfilter.txt,允许下载任意站点。修改后如下: #accept hosts in MY.DOMAIN.NAME +^ //默认允许所有的网站 # skip everything else -. 3 启动Cygwin,进入Nurch目录,执行以下命令: bin/nutch crawl weburls.txt –dir multiweb –depth 2 –topN 100 –threads 5 下载内容存放在multiweb目录中,同时建立索引。 4 修改检索规则,修改nutch-site.xml文件,修改后如下: http.agent.name * localweb.com searcher.dir D:\nutch-0.9\multiweb 5 执行检索命令bin/nutch org.apache.nutch.searcher.NutchBean 汽车 结果如下: 6 全部操作完成,退出Cygwin命令窗口。 4 Nutch互联网抓取 Nutch的互联网抓取和局域网抓取模式有很大差别。局域网下载模式使用Crawl命令,操作很简便,也有很多限制。互联网抓取模式使用了更底层的一系列命令、更灵活的控制手段。 下载大量网站 URL列表的获取,是真正实现全互联网抓取需要一个比较大的入口。有两种方法: 一是通过DmozParser工具提供了对开放式互联网DMOZ目录库的支持。DMOZ目录库可以直接从网上下载使用。使用DmozParser工具可以从文件中随机抽取部分数据,生成文件列表,命令如下: Bin/nutch org.apache.nutch.tools.DmozParser content.rdf.u8 –subset 3000 > dmozurls 命令执行结果是Nutch根目录生成一个dmozurls文本文件,该文件可以作为入口地址添加到下载库中。 二是查找国内比较大的互联网站点。 本次测试采用了vipurls.txt,里面存放了几个国内较大的互联网网站。 将vipurls.txt文件作为入口URL列表,下一步就是导入Nutch系统。具体步骤如下: 1 在nutch根目录D:\nutch-0.9下建立vip目录。 2 复制vipurls.txt文件到D:\nutch-0.9目录。利用文件内容向vip目录数据库添加初始的入口URL,命令如下: Bin/nutch inject vip/crawldb vipurls.txt。 3 修改配置文件,修改nutch-site.xml文件,设置http.agent.name属性的值。修改后文件如下: http.agent.name bookagent HTTP 'User-Agent' request header. MUST NOT be empty - please set this to a single word uniquely related to your organization. 4 利用crawldb中主要的url下载列表,调用generate命令创建新的数据段,存放到vip目录下。命令为: Bin/nutch generate vip.crawldb vip/segments 。 5 执行完上述命令,segments目录下会生成最新的日期时间文件夹,当前产生的文件夹名为20100312170028,可以根据自己机器显示的目录,修改命令中目录参数。根据文件夹下生成的下载列表获取网页内容,命令为: Bin/nutch fetch vip/segments/20100312170028 6 从已经下载的数据段列表中获取URL链接,更新crawldb数据库中的内容。 Bin/nutch updatedb vip/crawldb vip/segments/20100312170028 。 7 循环执行 4 5 6下载页面,直到crawldb的列表完成或者全部达到网页的深度。深度控制需要通过循环次数控制。 8调用analyze命令分析已经下载网页的内容 Bin/nutch updatedb vip/crawldb vip/segments/20100312170028 Bin/nutch analyze … 到此处运行出现问题,还未能解决。。 5 Nutch网页内容检测 搜索引擎的终极目标就是为用户提供检索服务。 1、 设置tomcat测试环境,把ROOT目录改名为ROOT_BACK,把nutch-0.9.war文件复制到webapps目录中,tomcat启动后,nutch-0.9.war文件会自动解压,将其解压目录改名为ROOT。 2、 修改配置文件:打开D:\Tomcat6.0\webapps\ROOT\WEB-INF\classes文件夹,修改nutch-site.xml文件,指定检索路径(searchar.dir)属性的参数值。修改后内容为: http.agent.name localweb.com localweb.com searcher.dir D:\nutch-0.9\multiweb 其中D:\nutch-0.9\multiweb目录为下载文件存储路径,可以根据上述抓取过程设定的目录进行修改。 3、重启tomcat,地址栏输入访问地址:http://127.0.0.1:8888。打开Nutch的默认搜索页面,如下图: 4、 在输入框中输入”汽车”,搜索结果会出现乱码,还需要做一下修改: 修改 Tomcat 的 server.xml 文件的 connnector: 其中 URIEncoding="UTF-8" useBodyEncodingForURI="true" 是需要新增的。否则搜索栏输入的字符默认编码将不能正确解析。 5、修改完后重启tomcat,输入网址,在输入框中输入“汽车”,检索结果如下图所示: 如上图所示,还有两个位置出现乱码,还需要进一步修改,暂时不知道修改那个文件。。。????? 整个简单的搜索引擎建立完成了。

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享文档获得金币 ] 3 人已下载

下载文档