Nutch1.2源码导入到Eclipse中有两种方法,一种是通过已有工程创建,一种是手动复制。相比通过已有工程创建,手动复制工程目录结构更加合理清晰。本文针对两种方法均予以介绍。
一、准备
本文使用如下版本的tomcat、nutch和eclipse:
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
eclipse-SDK-3.7.2-linux-gtk.tar.gz,下载地址:http://www.eclipse.org/downloads/
二、步骤
1. eclipse安装
进入包目录,运用命令:tar xzvf eclipse-SDK-3.7.2-linux-gtk.tar.gz解压就行,然后在桌面创建一个启动器,也即相当于Windows下的快捷方式,指向安装目录下的eclipse
2. nutch安装
2.1 手动复制方式
(1)首先下载nutch包apache-nutch-1.2-bin.zip,本文写作时nutch的最新版本为1.4,但我采用的是1.2版的。(注意:笔者在下载时发现该版本的src包有问题,换成bin包后正常,这个问题困扰了我很久,因为在源码src包下压根就没有plugins文件),然后解压,解压后的目录名为nutch-1.2,然后将其移动到目录/usr下。
命令如下:
unzip apache-nutch-1.2-bin.zip
mv nutch-1.2 /usr
(2)在eclipse中新建一个Java Project项目,名字自己定义(nutch),选择"Create New project in WorkSpace",点击完成。
(3)将解压后的nutch目录下的/src/java/中的代码(注:不是复制Java文件夹,而是该文件夹中的所有文件)全部复制到新建工程中的src下,再将解压后的nutch目录下的lib、plugins、conf三个文件夹复制到新建工程的根目录下(与src同级)。
(4)右键工程properties,切换到"Libraries"选择"Add Class Folder..." 按钮,从列表中选择"conf",将 conf加入到classpath中。
(5) 右键工程properties,切换到“Libraries”选择“Add External JARs “ 按钮,将lib文件夹中的所有jar(注:记住要将所有jar包都加入到工程中)加入到工程中。
(6) 修改配置文件
(1)conf/nutch-site.xml
修改conf下的nutch-site.xml,在configuration标签对中添加如下代码:
<property>
<name>http.agent.name</name>
<value>Your Agent Name Here</value>
</property>
(2)conf/nutch-default.xml
<property>
<name>plugin.folders</name>
<value>./plugins</value><!—小心这里的路径设置,如果这里设置的不对,会报错:Job Failure,这也是一个常见的错误-->
(3) conf/crawl-urlfilter.txt
在crawl-urlfilter.txt中找到MY.DOMAIN.NAME,将其改为想抓取的网站的正则表达式
#accept hosts in MY.DOMAIN.NAME
+^http://([a-z0-9]*/.)*qq.com/ ---试图抓取qq网站的内容
(4)在工程的根目录下新建weburls.txt,写入想抓取的网站URL,如:http://www.qq.com/
(7)执行nutch的crawl命令。
配置java项目的运行参数:
Program arguments:bin/nutch weburls.txt -dir crawl -depth 2 -topN 50 或 bin/nutch crawl urls -dir crawl -depth 2 -topN 50 (其中urls为目录,其下有一个url.txt的种子文件)
VM arguments:-Dhadoop.log.dir=log -Dhadoop.log.file=hadoop.log -Xms64m -Xmx512m
点Run运行之后若无错误,便会输出如下提示信息:
至此nutch导入eclipse中运行成功。
2.2 通过已有工程创建
(1)步骤同上
(2)File-->new-->java project,名字自己随便起只要不和以前的重复即可,例如nutch然后,将
上面的钩子去掉然后从Browse中找到自己的源码(注:此处的源码目录不能放在workspace目录下,否则会出现同名错误,因为eclipse会先在workspace下创建一个同名的工程),然后点击下一步
(3)切换到Libraries然后点击“Add Class Folder”将conf勾选上,然后切换到Order and Export,接着选中Nutch/conf然后点击Top将其移动到最顶端,然后点击完成
(4)切换到Libraries选择“Add External JARs ”按钮,将lib文件夹中的所有jar(注:记住要将所有jar包都加入到工程中)加入到工程中
(5)修改配置文件
(1)修改conf/nutch-site.xml,在<configuration>里添加
<property>
<name>http.agent.name</name>
<value>You Nutch Name</value>
</property>
(2)些处不用修改conf/nutch-default文件下plugin.folders的值(即保持plugins不变)
(3) 在crawl-urlfilter.txt中找到MY.DOMAIN.NAME,将其改为想抓取的网站的正则表达式
#accept hosts in MY.DOMAIN.NAME
+^http://([a-z0-9]*/.)*qq.com/ ---试图抓取qq网站的内容
(4)在工程的根目录下新建weburls.txt,写入想抓取的网站URL,如:http://www.qq.com/
(6)执行nutch的crawl命令。
3. 将nutch部署在tomcat中
其实做完上面的步骤,nutch的配置可以说就算完成了,因为我们已经可以用命令行来搜索了,但是为了更方便的展现,下面将nutch部署在Tomcat上,然后像访问Google那样访问其搜索页面。
这一步实际上非常简单,只要将apache-nutch-1.2-bin.zip解压后的nutch-1.2目录下的nutch-1.2.war包复制到tomcat的webapps下就行了。
步骤:
(1)解压apache-tomcat-7.0.27.tar.gz包到指定目录,解压后的目录名为apache-tomcat-7.0.27,然后移动到/usr目录下,并重命名为tomcat7.0
命令如下:
tar xzvf apache-tomcat-7.0.27.tar.gz
mv apache-tomcat-7.0.27 /usr
cd /usr
mv apache-tomcat-7.0.27 tomcat7.0
(2)将nutch-1.2目录(本文目录为/usr/nutch-1.2)下的nutch-1.2.war复制到tomcat目录下的webapps/下(本文为/usr/tomcat7.0/webapps/),tomcat在运行状态下会自动解压缩这个包(如果tomcat没有自动解压缩这个包可以用命令/usr/tomcat7.0/bin/startup.sh重启tomcat,然后就会自动解压缩该包)为nutch-1.2,打开解压缩后的文件nutch-1.2,在文件/nutch-1.2/WEB-INF/classes/nutch-site.xml(本文目录是/usr/tomcat7.0/webapps/nutch-1.2/WEB-INF/classes/nutch-site.xml)中加入:
<property>
<name>searcher.dir</name>
<value>/home/abiao/workspace/nutch/crawl</value>
</property>
其中爬取结果存放的路径应该是nutch项目文件夹中的crawl文件夹(本文为/home/abiao/workspace/nutch/crawl),这样就能保证搜索的结果是从我们刚才爬取的结果中得到的。
这时候搜索,可以在tomcat的命令行中看到乱码,我们还要配置下tomcat的conf/server.xml文件(本文目录为/usr/tomcat7.0/conf/server.xml),将其中的Connector元素改为如下形式:
<Connector port="8080″ protocol="HTTP/1.1″
connectionTimeout="20000″
redirectPort="8443″
URIEncoding="UTF-8″
useBodyEncodingForURI="true"/>
修改完后,重启下tomcat(命令为:/usr/tomcat7.0/bin/startup.sh),然后打开浏览器访问http://localhost:8080/nutch-1.2就可以得到正确结果了。
至此,配置完成。
4. 修改采集站点
(1) 修改weburls.txt文件内容(笔者改为:http://www.scut.edu.cn/)和crawl-urlfilter.txt内容(笔者改为:+^http://([a-z0-9]*/.)*scut.edu.cn/)
(2) 运行eclipse重新编译工程
(3) 重启ubuntu(因为我发现我重启tomcat不行,重启ubuntu才行),命令为:reboot
(4) 进入终端,启动tomcat,
命令为:su root
root
/usr/tomcat7.0/bin/startup.sh
(5) 打开浏览器访问http://localhost:8080/nutch-1.2就可以得到修改后的正确结果了