因为Nutch是一个搜索引擎,里面包含了爬虫、索引和提供搜索。所以为了提供查询服务,还需要下载tomcat,另外因为Nutch是使用java开发的,其运行自然少不了jdk。我采用的jdk版本是jdk-6u24-linux-i586.bin,tomcat版本是apache-tomcat-7.0.27,Nutch版本是1.2。
本文的Nutch是在Windows XP虚拟机Ubuntu10.10中安装和部署的。
首先在Windows XP虚拟机中安装Ubuntu10.10,具体如何安装请参见文章:http://blog.csdn.net/cailibiao/article/details/7547958。
我采用的虚拟机软件VMware Workstation6.5,Ubuntu版本是10.10。VMware Workstation采用6.5版而不是最新版7.0,是因为我的电脑配置运行不了7.0版。还有网上说Virtualbox相对VMware Workstation要好用很多,而且也小很多,具体我没用过,有兴趣的朋友可以试下。
一、准备
本文使用如下版本的jdk,nutch和tomcat:
jdk-6u24-linux-i586.bin,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
apache-tomcat-7.0.27.tar.gz,下载地址:http://tomcat.apache.org/
apache-nutch-1.2-bin.zip,下载地下载:http://apache.etoak.com//nutch/apache-nutch-1.2-bin.zip
首先下载上述软件,然后在Ubuntu的“/home/用户名”目录下建立一个文件夹保存文件,我建了一个tmp文件夹,最后用FileZilla软件将上述文件通过Windows XP宿主机上传到Ubuntu的这个新建文件夹中。具体操作可参考文章:http://blog.csdn.net/cailibiao/article/details/7549924。
二、步骤
1. JDK1.6安装
(1)安装jdk
在Ubuntu中进入/home/用户名/tmp文件夹下,运行jdk安装文件,命令如下:
./jdk-6u24-linux-i586.bin
(2)修改权限
此时若提示权限不够,还要修改权限,命令如下:
chmod 755 jdk-6u24-linux-i586.bin 或 chmod 777 jdk-6u24-linux-i586.bin
注:
1. 在对某一文件或文件夹进行操作时,若权限不够,即不能执行文件或不能在文件夹下新建文件,可以反复运用上述命令修改权限
2. ubuntu中root帐号默认是没有开启的,即ubuntu中root帐号是锁定了的,为了启用root帐号,需要运用如下命令:
sudo passwd root //为root设置新的密码
当设置好root用户的密码之后,我们就可以使用了,当我们在安装或查看一些特殊文件,特殊操作时,需要使用到root用户,只须在普通用户下用su就可以切换了
su root //输入root用户的密码就可以使用了,一般我们可以不这样用,因为这是root用户,我们可以不用把root跟在su命令之后也行的,但若是普通用户切换到其它用户就必须
将用户名跟在su的后面,若是root用户切换到普通用户,直接exit就可以了。
当你使用完毕后屏蔽root帐号使用命令:
sudo passwd -l root //这条命令将锁住root用户,就相当于回到系统前,root用户没有密码,从而不能使用,这样就更为安全。
(3)移动文件
将解压后生成的文件jdk1.6.0_24移动到/usr目录下,命令为:
mv /home/用户名/tmp/jdk1.6.0_24 /usr
同时命名为jdk1.6,命令为:
mv jdk1.6.0_24 jdk1.6
(4)环境变量配置
执行命令:sudo gedit /etc/environment
更新PATH,同时添加CLASSPATH、NUTCH_JAVA_HOME和TOMCAT_HOME环境变量
PATH后面添加“:/usr/jdk1.6/bin”
//其实在后面下面三个环境变量好像并没有用到
CLASSPATH=".:/usr/jdk1.6/lib"
NUTCH_JAVA_HOME="/usr/jdk1.6/" (配置Nutch的时候会用到)
TOMCAT_HOME="/usr/tomcat7.0/" (配置tomcat的时候会用到)
2. Nutch1.2安装
(1)解压unzip apache-nutch-1.2-bin.zip,解压后目录名为nutch-1.2,然后移动到/usr目录下
(2)在nutch-1.2目录下创建目录urls(可任意名)”mkdir urls“,在urls目录下创建文件url.txt(可任意名),"sudo gedit url.txt",输入爬虫的入口地址:http://www.baidu.com
(3)打开nutch-1.2/conf/crawl-urlfilter.txt,定位到最后的MY.DOMAIN.NAME一行,将其改为实际的网址或者*,如为*则可爬取任意网站。
原来:+^http://([a-z0-9]*\.)*MY.DOMAIN.NAME/
改为:+^http://([a-z0-9]*\.)*或者:+^http://([a-z0-9]*\.)*www.baidu.com
(4)打开nutch-1.2/conf/nutch-site.xml,加入下面内容
<configuration>
<property>
<name>http.agent.name</name>
<value>mynutch</value>这部分是必须的,可以是任意的名字
</property>
</configuration>
至此nutch的基本配置完成。
(5)开始爬取网页
命令行输入:
bin/nutch crawl urls -dir crawl -depth 2 -topN 50 -threads 2
其中:
bin/nutch 执行bin目录下的nutch脚本(nutch安装程序下的bin目录,本文为/usr/nutch-1.2/bin/nutch)
crawl 执行爬虫命令
urls是爬取的入口地址
-dir = crawl 指明下载数据存放路径,该目录不存在时,会被自动创建
-deptch = 2 下载深度为2
-topN = 50 下载符合条件的前50个页面
-threads = 2 启动的线程数目
爬虫运行时会输出大量数据,抓取结束之后,可以发现crawl目录被生成,里面有crawldb,linkdb,segments,indexes 和 index 五个目录
(6)开始搜索测试
bin/nutch org.apache.nutch.searcher.NutchBean searchwors
其中searchwors是要搜索的关键字,返回搜索结果。
如:
3. 通过tomcat进行web搜索
(1)解压tar xzvf apache-tomcat-7.0.27.tar.gz包到指定目录,然后移动到/usr目录下,并重命名为tomcat7.0
(2)将nutch-1.2中的nutch-1.2.war复制到tomcat目录下的webapps/中(本文为/usr/tomcat7.0/webapps/),tomcat在运行状态下会自动解压缩这个包,打开解压缩后的包,在文件/nutch-1.2/WEB-INF/classes/nutch-site.xml中加入:
<property>
<name>searcher.dir</name>
<value>/usr/nutch-1.2/crawl</value>
</property>
这个value值为所爬取到的数据的存储路径,搜索引擎根据这个路径搜索到用户想要的内容。
注:
如果没有自动解压nutch-1.2.war包,可以通过如下命令启动tomcat,然后tomcat运行时就会自动解压该包并生成nutch-1.2文件
命令为:
/usr/tomcat7.0/bin/startup.sh
(3)在Web上进行nutch搜索
在浏览器中输入http://localhost:8080/nutch-1.2,显示nutch的搜索界面。
在出现的搜索界面中填写搜索关键词,即可获得结果。
(4)乱码处理
如果出现乱码,则将tomcat安装目录下conf/server.xml定位到connector并修改一下:
<Connector prot="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"
useBodyEncodingForURI="true" />
如里还是不能解决,重启下虚拟机就好了。
搜索百度结果如下: