前言:作者(守望者MS)在实际搭建并开发Nutch的过程中参阅很多中文资料,但内容并不详尽且有错误,于是在此记录个人实战过程,纠正一些文章错误,以详细的过程展现一次简单的二次开发流程,为初学者降低门槛。但不能保证完全没有错误,如有发现希望大家指正。
目录:
Cygwin,Nutch安装配置,检验是否正确(对网友守望者博客的修改---在此感谢守望者)1
Cygwin,Nutch安装配置,检验是否正确(对网友守望者博客的修改---在此感谢守望者)2
Cygwin,Nutch安装配置,检验是否正确(对网友守望者博客的修改---在此感谢守望者)3
Cygwin,Nutch安装配置,检验是否正确(对网友守望者博客的修改---在此感谢守望者)4一、开发环境介绍(以我个人为例):
个人开发端:windows Server 2003 + Cygwin + Eclipse3.2
二、具体步骤:
<1>.下载nutch1.2(http://labs.renren.com/apache-mirror//nutch/)
下载完成后解压到指定的文件夹。
在开始测试Nutch是否搭建成功之前,请先确保本机安装了JDK,并且设置了正确的JAVA_HOME环境变量,注意:环境变量的设置中一定要将JDK的安装根目录设置为JAVA_HOME,然后再设置CLASSPATH,PATH,即:%JAVA_HOME%/bin,%JAVA_HOME%/lib,千万不要设置为绝对目录,否则在执行Nutch命令时会出现错误
<2>.开始配置Nutch:
第一:修改nutch目录下的conf子目录下的两个文件:
在nutch-site.xml的configuration下增加一个http.agent.name节点(如不修改则不能抓取)
<configuration>
<property>
<name>http.agent.name</name>
<value>HD nutch agent</value>
</property>
<property>
<name>http.agent.version</name>
<value>1.2</value>
</property>
</configuration>
在crawl-urlfilter.txt中将如下语句改成需要的形式:
# accept hosts in MY.DOMAIN.NAME
+^http://([a-z0-9]*\.)*com.cn/
+^http://([a-z0-9]*\.)*cn/
+^http://([a-z0-9]*\.)*com/
注:“+”号前不要有空格
第二:执行抓取操作
(1).在Nutch根目录下新建一个url.txt文件,其每一行输入你想要爬去的网站域名。
例如:
注:以行为单位,每行输入一个域名,且域名格式遵从上述例子,最后要加"/"
接着修改:apache-nutch-1.2-bin.zip\nutch-1.2\conf\nutch-default.xml中内容:
<property>
<name>http.agent.name</name>
<value>sina</value>
<description>HTTP 'User-Agent' request header. MUST NOT be empty -
please set this to a single word uniquely related to your organization.
NOTE: You should also check other related properties:
http.robots.agents
http.agent.description
http.agent.url
http.agent.email
http.agent.version
and set their values appropriately.
</description>
</property>
红色标记的地方不能为空,可以随便写一个
解决方法:在cygwin中输入:export LANG="zh_CN.GBK"
,而后回车
其实就是设置下linux的环境变量
一定要写:否则出现如下错误:
Exception in thread "main" java.io.IOException: Job failed!
at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1252)
at org.apache.nutch.crawl.Injector.inject(Injector.java:217)
at org.apache.nutch.crawl.Crawl.main(Crawl.java:124)
(2).打开cygwin,执行命令行:
注:作者的Nutch放置在G:/nutch
命令行:cd g: (其中g表示你的apache-nutch-1.2-bin的存放位置)
apache-nutch-1.2-bin重命名为:nutch
命令行: cd nutch
命令行: bin/nutch crawl url.txt –dir localweb –depth 3 –threads 4
注:该命令行中的参数请自行学习参考,这里不多做解释。
此时,Nutch就开始执行抓取操作了,配置成功。
经过以上的步骤,后端的操作基本完毕,此时可以在cygwin中到nutch根目录下
执行下面命令进行简单的查询测试:
bin/nutch org.apache.nutch.searcher.NutchBean 关键字
<3>Tomcat的配置
(1).将tomcat安装目录下的\webapps下的ROOT删除;
(2).将nutch目录的nutch-1.2.war复制到tomcat\webapps下,并将其改名为ROOT.war;
如果Tomcat正在运行,那么ROOT.war会自动生成ROOT文件夹;如果没有运行,那么启动Tomcat之后,会自动生成ROOT文件夹。
(3.)打开ROOT\WEB-INF\classes下的nutch-site.xml文件,修改成如下形式:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="nutch-conf.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<nutch-conf>
<property>
<name>searcher.dir</name>
<value>g:/nutch/localweb</value>
</property>
</nutch-conf>
其中的"<value>g:/nutch/localweb</value>"部分,应根据自己的设置进行相应修改,是nutch抓取结果存放目录。
启动Tomcat,打开浏览器在地址栏中输入:http://localhost:8080/,即可看见nutch的搜索页面。
至此,Nutch的简单配置完毕,接下来说说如何在eclipse中导入并调试Nutch,