来源:http://read.newbooks.com.cn/info/196850.html
一、基本要求
1. Java 1.4.x
这里是Sun的Java官方网站,这里可以下载到J2EE SDK 1.4版本的安装程序。
2. Apache's Tomcat 4.x
这里是Apache's Tomcat的官方网站,这里可以下载到Apache's Tomcat 6.0版本的安装程序。
3. Cygwin
这里是Cygwin的官方网站,这里可以下载到Cygwin的下载程序。
4. Nutch
这里是Nutch的官方网站,这里可以下载到Nutch 0.9版本的程序。
二、程序安装
1. 安装J2EE和Tomcat
需要注意的是J2EE SDK和Apache's Tomact均是在Windows上运行的程序,在下载时需要选择For Windows而不是For Linux。J2EE SDK和Apache's Tomact的安装都很简单,没什么好多说的。
2. 安装Cygwin
到Cygwin官方网站下载的程序只是一个用于下载Cygwin的程序,需要通过这个下载程序下载Cygwin。可以到网上搜索一下相关的安装教程,过程也比较简单。
3. 安装Nutch
把从Nutch官方下载的压缩文件拷贝到Cygwin所在目录下的usr/local的目录中(放到别的目录中也可以,但最好在Cygwin下的目录中,否则执行起命令来就比较麻烦),然后解压。你也可以先解压再拷贝,这都无关紧要。最后我把解压的文件夹重命名为nutch,如果你没有重命名,在执行下面的命令时要注意替换。
4. 设置环境变量
打开Cygwin,在命令行中执行如下命令:
$ NUTCH_JAVA_HOME=D:/Sun/AppServer/JDK
$ export NUTCH_JAVA_HOME
上面的环境变量NUTCH_JAVA_HOME的值是你机器上Java SDK所在的目录,在笔者机器上是“D:/Sun/AppServer/JDK”。可以通过输入export命令查看环境变量是否添加成功。
至此我们的Nutch程序就算在Cygwin环境中安装完成了。
三、配置Nutch及执行爬行操作
在爬行之前,还需要做一些准备工作。需要注意的是在下文中如果没有特别说明,均指操作是在Windows中进行的。
1. 在Nutch目录下创建一个文件用来存放要抓取的网址,这里我们创建了一个名为url.txt的文本文件,文件内容如下:
http://blog.csdn.net/thinkport/
2. 打开Nutch目录下的conf/crawl-urlfilter.txt文件,设置爬虫搜索的范围,内容如下:
# accept hosts in MY.DOMAIN.NAME
+^http://blog.csdn.net/thinkport/
3. 打开Nutch目录下的conf/nutch-site.xml文件,在<configuration>和</configuration>之间添加如下内容:
<property>
<name>http.agent.name</name>
<value>Think</value>
<description></description>
</property>
<property>
<name>http.agent.description</name>
<value>Think</value>
<description></description>
</property>
<property>
<name>http.agent.url</name>
<value>http://blog.csdn.net/thinkport</value>
<description></description>
</property>
<property>
<name>http.agent.email</name>
<value>thinkport@email.com.net.org</value>
<description></description>
</property>
在上面的property的value中设置你爬虫的信息,这些信息将会附加在你发送给服务器的HTTP请求中。
4. 在Cygwin中执行如下命令:
$ cd /usr/local/nutch
$ bin/nutch crawl url.txt -dir blog -depth 2 -threads 10 >& crawl.log
上面的url.txt指定了我们创建的存有网址的文本文件,blog是用于保存Nutch创建的索引文件的文件夹,后面配置Tomcat时要用到。参数depth指定了爬虫爬行的深度,参数threads指定了用于爬行的并发线程数。
四、在Tomcat中搭建搜索程序
1. 到Tomcat的webapps目录下,删除Root文件夹(如果你害怕,那就先给这个文件夹改个名字吧),将Nutch目录中的nutch-0.9.war重命名为root.war,然后将root.war拷贝到Tomcat/webapps目录下,Tomcat会自动为你创建一个名为ROOT的文件。
2. 在webapps/root/web-inf/classes/nutch-site.xml的文件中添加如下内容:
<property>
<name>searcher.dir</name>
<value>D:/cygwin/usr/local/nutch/blog</value>
</property>
修改value为你爬行的程序存放索引的目录,在这里我们的目录是D:/cygwin/usr/local/nutch/blog,参见本文3.4节中关于blog的说明。
3. 在Web浏览器中访问http://localhost:8080/,即可使用Nutch搜索刚才爬行过的网页中的内容了。
五、常见问题
1. 在Nutch的搜索框中输入中文变成乱码的问题。问题是由Tomcat引起的,只要在Tomcat的conf/server.xml指定编码便可解决问题,修改后的内容如下:
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"
useBodyEncodingForURI="true" />
其中URIEncoding="UTF-8"和useBodyEncodingForURI="true"是要添加的内容。
2. 错误信息:
Stopping at depth=0 - no more URLs to fetch.
No URLs to fetch - check your seed list and URL filters.
你漏了在conf/crawl-urlfilter.txt中设置搜索范围,详见本文的3.2节。
3. 错误信息:
failed with: java.lang.RuntimeException: Agent name not configured!
你漏了设置爬虫的Agent信息,详见本文的3.3节。
本文地址:http://read.newbooks.com.cn/info/196850.html