Apache Nutch17 学习总结.docx
- 文档编号:23115700
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:61
- 大小:948.71KB
Apache Nutch17 学习总结.docx
《Apache Nutch17 学习总结.docx》由会员分享,可在线阅读,更多相关《Apache Nutch17 学习总结.docx(61页珍藏版)》请在冰豆网上搜索。
ApacheNutch17学习总结
ApacheNutch学习总结
目录
前言2
Nutch搭建过程[1]2
1准备工作2
2开始部署2
2.1安装linux系统2
2.2安装jdk2
2.3.配置nutch创建索引3
2.4安装tomcat6
2.5配置nutch查询索引6
参考文献9
Nutch爬取内容解析[1]10
1Nutch的输出文件10
1.1Crawldb10
1.2Linkdb10
1.3Segments10
1.4Indexes12
1.5Index12
2Nutch爬取内容解析13
2.1nutch的所有命令[2]13
2.2nutch的页面转存命令19
2.3nutch页面转存程序21
参考文献21
Nutch的爬取设置和配置文件22
1nutch的爬取深度22
2nutch的配置文件[2]23
2.1配置文件的优先级23
2.2配置文件详解25
2.3nutch抓取动态网页配置[3]33
2.4关于配置文件的一些细节问题[4][5]34
参考文献36
后序内容37
前言
学习使用nutch的时间加起来能有一个月了,在网上也搜集了不少的资料,但是比较零散,所以想把这一个月使用它的全部过程、原理的讲解和中间的注意事项总结一下。
主要汇总写网上已有的资料,方便查阅嘛。
Nutch在Windows下的搭建过程
1准备工作
我是在Window7下搭建的Nutch,所需要的工具如下:
(1)Cygwin安装
(2)jdk-6u25-win-i586.bin
(2)apache-nutch-1.2-bin.tar.gz
2安装Cygwin
下载地址:
(1)因为nutch自身的命令是要在linux环境下才能运行,所以先安装了cygwin,Cygwin是一个在Windows下的模拟Linux系统程序。
Cygwin的安装:
这个网址对cygwin的安装步骤演示的很详细,对我们这些初步接触cygwin的人有很大的帮助。
(2)下面是我自己安装时的截图
1)安装页面,点击下一步
图示中共有三种安装方式:
(1)InstallfromInternet:
从Internet上下载并安装软件;
(2)DownloadWithoutInstalling:
从Internet上下载安装的文件,但暂时不安装;
(3)InstallfromLocalDirectory:
从本地含有安装文件的目录进行安装。
我们选择第一项“InstallfromInternet”后,点击“下一步”
2)选择安装目录,可以根据默认,也可以根据自己需要换路径
3)建立Downloads文件夹,接收下载包
4)选择镜像地址,没有演示中说的:
代表中国的网站,下载会更快
5)选择安装包
安装向导显示出所要安装的内容列表,用户可以根据自己的实际需要来决定安装哪些程序。
点击循环箭头图标后面的文字,可以更改安装的方式,常用的方式有Default(表示只安装缺省的安装项)、Install(表示安装全部程序,空间要求较大)、Reinstall(表示重新安装程序)。
6)安装完成
至此,笔者还要对Cygwin再多说几句。
Cygwin是一个在Windows平台上模拟运行Unix的环境,用户可以通过它来熟悉与学习Unix系统的操作。
对于Unix系统还不甚熟悉的读者可以参阅笔者之前写作的《Unix操作系统的入门与基础》、《Unix的轻便“约取而实得”》系列文章,下文中对涉及使用到的Unix命令将不再给予具体解释。
3安装Nutch1.7
Nutch是一个Java实现的web爬虫,爬取的结果存储到database(指定文件路径下的一系列文件及目录)供Solr或Lucene索引和检索。
2014年发布的最新版本有两个:
主流的v1.7和支持大范围爬取、大数据存储的v2.0。
常见搜索相关的框架的基本功能列表:
爬取
索引
检索
Nutch
√
Solr
√
√
Lucene
√
√
Grub
√
Larbin
√
Grub(searchengine)是开源的分布式搜索爬虫平台(distributedsearch crawlerplatform)。
创建于2000年,2003年被LookSmart收购,后来被中止,2007年再次启动。
官网grub.org。
注意与GNUGRUB的不同,GNUGRUB是计算机启动的引导加载程序(bootloader)。
Larbin是法国人用C++实现的web爬虫,最近已经不更新了。
下载安装apache-nutch-1.7-bin.zip并设置。
下载地址:
http:
//archive.apache.org/dist/nutch/
(1)下载完成后将其解压到D盘,文件夹名为nutch-1.7
解压缩Nutch二进制分发包,目录如下:
●bin目录,只包含一个可执行文件nutch
●conf目录,nutch命令执行的配置参数
●docs目录,JavaDoc帮助
●lib目录,相关Jar类库
●plugins目录,相关插件库
(2)输入
,打开到d盘目录下nutch-1.7文件夹,输入bin/nutch进行nutch安装测试:
出来一系列nutch的命令,证明nutch安装成功;
“工欲善其事,必先利其器。
”经过前文的“细解”,我们已经完成了Nutch在Windows中的安装。
接下来就让我们通过锋芒初试,来亲自体验一下Nutch的强大功能吧!
(3)在Windows系统的环境变量设置中,添加NUTCH_JAVA_HOME环境变量:
D:
\jdk1.7.0_07。
并将其值设为JDK的安装目录。
4Nutch1.7测试
1.Nutch的爬虫抓取网页有两种方式,一种方式是IntranetCrawling,针对的是企业内部网或少量网站,使用的是crawl命令;另一种方式是Whole-webcrawling,针对的是整个互联网,使用inject、generate、fetch和updatedb等更底层的命令。
本文将以使用Nutch为笔者在CSDN处的个人专栏(Crawling的基本使用方法(假设用户电脑系统已安装好JDK、Tomcat和Resin,并做过相应的环境配置)。
1、设置Nutch的环境变量
在Windows系统的环境变量设置中,添加NUTCH_JAVA_HOME环境变量:
D:
\jdk1.7.0_07。
并将其值设为JDK的安装目录。
。
2、Nutch抓取网站页面前的预备工作
(1)修改配置文件conf/nutch-site.xml
修改属性http.agent.name为任何其他值
(2)设置要爬取的网址URL
创建myURLs目录(为了执行方便,最好为$NUTCH_HOME/myURLs)
在myURLs目录创建文件seed.txt,编辑该文件,一行一个要爬取的网址url。
(3)编辑conf/crawl-urlfilter.txt文件,修改MY.DOMAIN.NAME部分:
#accepthostsinMY.DOMAIN.NAME
+^
(4)执行命令nutch命令
bin/nutchcrawlmyURLs-dircrawlDir-depth3-topN5
说明:
crawl是nutch命令的参数,表示进行爬取操作;
myURLs指定要爬取的URLs;
crawlDir指定爬取结果的存放目录;
depth指定爬取的网址的深度,即从指定URL逐层进入的链接的深度;
topN指定在每个深度爬取的页面数量上限
等待大约2分多钟后,程序运行结束。
读者会发现在nutch-0.7.1目录下被创建了一个名为crawled的文件夹,同时还生成一个名为crawl.log的日志文件。
利用这一日志文件,我们可以分析可能碰到的任何错误。
(5)爬取结果分析
经过若干时间,nutch命令执行完毕,crawlDir目录下将出现如下3个子目录:
●crawldb,其中是Nutch已知的全部URL(包括已经爬取的和未爬取的,爬取的时间)。
●linkdb,其中是到每个URL的已知链接列表,包括源URL和链接的锚名字。
●segments,其中是segment的集合。
一个segment是URLs的集合,这些URLs作为一个单位(unit)被爬取。
⏹crawl_generate,命名爬取的URLs集合
⏹crawl_fetch,包含每个URL的爬取状态
⏹content,包含从每个URL爬取的原始内容
⏹parse_text,包含每个URL的解析之后的文本
⏹parse_data,包含从每个URL解析出来的外部链接(outlinks)和元数据(metadata)
crawl_parse,包含外部链接URLs,用以更新crawldb
(6)过滤要爬取的URLs
打开文件conf/regex-urlfilter.txt,该文件末尾如下:
#acceptanythingelse
+.
说明:
每行的第一个字符:
+表示包含后续的URL,-表示忽略后续的URL。
所以原始文件中的“+.”表示包含任何URL。
内容替换如下:
#acceptanythingelse
+^http:
//([a-z0-9]*\.)*nutch.apache.org/
5Nutch与Solr结合使用
1、安装设置Solr
●下载Solr并解压缩(记{Solr解压缩目录}为SOLR_HOME)
●进入$SOLR_HOME/example
●执行java–jarstart.jar
打开浏览器,访问http:
//localhost:
8983/solr/admin/,如果正常即表示启动成功
2、集成Nutch与Solr
Nutch擅长网页抓取,Solr擅长索引和搜索。
通过如下命令可以在Nutch爬取的同时进行Solr索引:
bin/nutchcrawlmyURLs-solrhttp:
//localhost:
8983/solr/-depth3-topN5
Nutch完成爬取之后,使用Solr索引:
●复制$NUTCH_HOME/conf/schema.xml到$SOLR_HOME/example/solr/conf
●进入$SOLR_HOME/example
●重新执行java–jarstart.jar
●执行如下Nutch命令,将Nutch爬取的数据发送给Solr进行索引
bin/nutchsolrindexhttp:
//127.0.0.1:
8983/solr/crawlDir/crawldb-linkdbcrawlDir/linkdbcrawlDir/segments/*
Solr建立索引之后,就可以打开浏览器,访问http:
//localhost:
8983/solr/admin/进行各种关键词检索了。
Nutch在Linux下的搭建过程
1准备工作
我是在virtualbox下用虚拟机进行的nutch搭建,所需要的工具如下:
(1)Virtualbox最新版
(2)ubuntu-desktop最新版(以后会改为ubuntu-server)
(3)jdk-6u25-linux-i586.bin
(4)apache-nutch-1.2-bin.tar.gz
2开始部署
2.1安装linux系统
首先安装VirtualBox,然后安装ubuntu,就是传统的安装方法。
上传所用的包到linux系统~/tmp目录下,~表示用户目录。
2.2安装jdk
终端命令
1.#cd ~/tmp
2.#chmod a+x jdk-6u23-linux-i586.bin
3.#sh jdk-6u23-linux-i586.bin
4.#mkdir /usr/java
5.#mv jdk1.6.0_23 /usr/java/
配置用户环境变量[2]
这个比较重要,最开始nutch多次爬取失败,就是因为环境变量配置的不对。
最开始是在~/.bash_profile下配置,后来又在/etc/profile下配置,但是由于nutch有些命令需要管理员权限,当进入管理员权限时,上述配置的环境变量就不生效了,所以最后在/etc/environment下配置环境变量才好使。
在/etc/profile下配置环境变量(这个最好也配置上吧)。
终端命令
1.#sudugedit/etc/profile
2.(在该文件中添加如下内容)
3.exportJAVA_HOME=/usr/java/jdk1.6.0_25
4.exportJRE_HOME=/usr/java/jdk1.6.0.25/jre
5.exportCLASSPATH=.:
$JAVA_HOME/lib:
$JRE_HOME/lib:
$CLASSPATH
6.exportPATH=$JAVA_HOME/bin:
$JRE_HOME/bin:
$PATH
在/etc/environment下配置环境变量。
终端命令
1.sudugedit/etc/environment
2.(在该文件中添加如下内容)
3.JAVA_HOME=/usr/java/jdk1.6.0_25
4.JRE_HOME=/usr/java/jdk1.6.0.25/jre
5.CLASSPATH=.:
$JAVA_HOME/lib:
$JRE_HOME/lib:
$CLASSPATH
6.PATH直接在该文件本来有的PATH后面添加即可
注意1:
每段路径中间用冒号(:
)分开,别忘记了那个点(.)
注意2:
在尝试的过程中,environment文件内容的错误添加可能导致电脑无法进入,反复的停留在登陆界面。
(我在最开始修改这个文件的时候遇到过),只需按crl+alt+F2,在命令行界面把错误的修改删除即可。
测试
终端命令
1.#java –version
输出
1.javaversion"1.6.0_25"
2.Java(TM)SERuntimeEnvironment(build1.6.0_25-b05)
3.Java HotSpot(TM)ClientVM(build19.0-b09,mixedmode,sharing)
Jdk安装成功
另外,在终端下输入env,能够看到所有已经配置的环境变量,看看是否有这几个变量。
输入sudosu,然后输入env,看在管理员权限下,是否有这几个变量。
2.3.配置nutch创建索引
终端命令
1.#unzip apache-nutch-1.2-bin.zip
2.#mv nutch-1.2 /opt/
3.#cd /opt/nutch-12
终端命令
1.#vim conf/crawl-urlfilter.txt
注1:
这里用vim,vi,gedit都可以,如果是vim的话,可能还需要下载vim,使用apt-getinstall命令安装。
注2:
crawl-urlfilter.txt是用来配置所爬取网站的范围,域名和它的子网页的正则表达式,类似于爬取规则。
这里是以爬取新浪网第一页为例子的。
找到该文件中如下内容的部分
1.# accept hosts in MY.DOMAIN.NAME
2.+^http:
//([a-z0-9]*\.)*MY.DOMAIN.NAME/
更改为
1.# accept hosts in MY.DOMAIN.NAME
2.+^http:
//([a-z0-9]*\.)*
接下来修改nutch-site.xml文件,这类似于对我要爬取的网站进行一下声明,不声明的话,会导致爬取失败
终端命令
1.#vim conf/nutch-site.xml
在该文件中添加
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
这里面的值(value)应该是可以更改的(并未进行过尝试)。
然后建立种子文件,说明爬取的网站域名列表,现在只有新浪网一个。
终端命令
1.#cd bin
2.#mkdir urls
3.#vimurls/nutch.txt
这个文件的名称是自定义的,如nutch.txt,seed.txt,url.txt,随意。
在该文件中添加需要爬取的网站的最高层域名。
这里添加内容如下
1.
此后创建日志,用来基础爬取时的输出情况,不指定输出文件的话,默认是输出到终端。
终端命令
1.#mkdir logs
2.#vim logs/log1.log
3.:
wq
创建索引,用来存储爬取下来的所有结果。
终端命令
1.#mkdir /opt/index
此后便可以进行爬取工作,输入nuch创建索引shell指令,这也是nuch不能在window下安装原因,在windows需要装虚拟机或用cygwin(在windows下运行unixshellcommand需要)。
而且不能在win7下用cygwin模拟,试了一天才知道这一点。
爬取命令如下,得加sudo,因为读写了home的上层目录。
终端命令
1.#sudosh
2.#bin/nutchcrawlurls–dir/opt/index–depth10–threads2–topN100000|teelogs/log1.log
crawl:
通知nutch.jar,执行crawl的main方法。
urls:
存放需要爬行的url.txt文件的目录
dir:
爬行后文件保存的位置
depth:
爬行次数,或者成为深度,不过还是觉得次数更贴切,建议测试时改为1
threads指定并发的进程这是设定为4
topN:
一个网站保存的最大页面数。
终端命令
1.#ls /opt/index
下面有索引内容表示成功,没的话看logs/log1.log日记的异常。
到此算是爬取的过程。
可能出现的错误如下[3][4]
Exceptioninthread"main"java.io.IOException:
Jobfailed!
atorg.apache.hadoop.mapred.JobClient.runJob(JobClient.java:
1252)
atorg.apache.nutch.crawl.Injector.inject(Injector.java:
226)
atorg.apache.nutch.crawl.Crawl.main(Crawl.java:
124)
这是由于JAVA_HOME没有设置好造成的,重新在/etc/environment中设置,并重启就好了。
Exceptioninthread"main"java.io.IOException:
Jobfailed!
atorg.apache.hadoop.mapred.JobClient.runJob(JobClient.java:
1252)
atorg.apache.nutch.crawl.Injector.inject(Injector.java:
217)
atorg.apache.nutch.crawl.Crawl.main(Crawl.java:
124)
一说是语言设置的不对,因为函数返回值的类型无法匹配造成,需要在环境变量(/etc/environment)中配置“LANG="zh_CN.GBK",我尝试了,但是没有解决。
后来查看源代码,是因为有一个文件没有找到造成的,需要把根目录中的nutch-1.2.jar拷贝到lib子目录中去。
,因为在/bin/nutch的文件中需要读取这个包,但是这个包的路径不正确。
”这个问题很严重,尤其在最初搭建的时候,很多的网址几乎都没有写这个解决方案。
导致很久爬取不成功。
应该没有其他的问题了,至少我没遇到。
2.4安装tomcat
终端命令
1.#cd ~tmp
2.# tar xzvf apache-tomcat-6.0.29.tar.gz
3.#mv apache-tomcat-6.0.29 tomcat
4.#mv tomcat /usr/local/
启动tomcat
终端命令
1.#/usr/local/tomcat/bin/startup.sh
会有如下的输出
Using CATALINA_BASE:
/usr/local/tomcat
Using CATALINA_HOME:
/usr/local/tomcat
Using CATALINA_TMPDIR:
/usr/local/tomcat/temp
Using JRE_HOME:
/usr/java/jdk1.6.0_23
Using CLASSPATH:
/usr/local/tomcat/bin/bootstrap.jar
终端命令
1.#netstat –tln
查看8080端口是否开启
测试访问http:
//localhost:
8080
正常出现tomcat首页,测试成功后关闭tomcat
终端命令
1.#/usr/local/tomcat/bin/shutdown.s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Apache Nutch17 学习总结 学习 总结