/**
*本人亦初学者,如有不正确的地方请多多指教。谢谢!
**/
环境要求:
1.JDK1.5 或者更高。
2.Tomcat5.x 或者更高。
3.windows下需要Linux仿真环境Cygwin来提供Shell支持。
准备工作:
1.下载安装Nutch,你可以从http://lucene.apache.org/nutch/release/ 下载,然后解压即可。我这里解压到 D:Nutch-1.0.
2.在Cygwin命令窗口中,使用Shell命令“cd /cygdrive/d/nutch-1.0"切换当前工作目录到Nutch的安装目录。cygdrive是系统默认访问本地驱动器的虚拟目录,d是本地驱动器符合,nutch-1.0是nutch的安装目录。输入Nutch命令”bin/nutch",测试命令是否可用。正确执行后,应该给出Nutch的一系列命令参数,如下图所示:
3.你需要给你的网络蜘蛛取一个名字,这是必须的。在Nutch目录下找到conf/nutch-default.xml文件,搜索http.agent.name,设置这个属性的值。这个属性值在抓取网页的时候,会携带于HTTP请求的协议头里面,用来表明网络蜘蛛的身份。
现在已经准备就绪,可用进行网页的抓取了。
我们有两种方式可以使用。
1.使用一步到位的crawl命令,这通常用于intranet的抓取。操作很简便,但是有许多限制。
2.更加灵活方便的互联网抓取模式。使用一些更加底层的命令,如inject,generate,fetch,updatedb。
首先,我们一步一步来实现第一种方式。
1.在Nutch安装目录下新建一个urls目录,在urls目录中添加一个文本文件,其内容可以是你想抓取的网站的url地址。我的示例地址为www.sina.com.cn.
2.修改conf/crawl-urlfilter.txt.过滤规则以“+”表示允许下载。默认的规则如下:
+^http://([a-z0-9]*\.)*MY.DOMAIN.NAME/
如果只允许下载iteye.com的网页,可以更改设置为+^http://([a-z0-9]*\.)*sina.com.cn/
3.执行crawl命令。典型的命令如下:
bin/nutch crawl urls -dir javaeye -depth 3 -topN 100 -threads 3
-dir :存放爬行结果的目录
-depth:抓取的页面深度
-topN:每一层抓取前N个URL
=threads:下载的线程数目
等这一步完成以后,就可以进行搜索了。
4.搜索。
将Nutch目录下面Nutch-1.0.war部署到tomcat的wepapp目录下,启动tomcat.在解压后的nutch-1.0目录下找到nutch-site.xml文件,修改其内容如下:
<configuration>
<property>
<name>http.agent.name</name>
<value>yourAgentName</value>
</property>
<property>
<name>searcher.dir</name>
<value>D:/nutch-1.0/javaeye</value>
</property>
</configuration>
重新启动Tomcat。通过浏览器访问:http://localhost:8080/nutch-1.0 ,将看到如下搜索页面:
输入你希望搜索的关键字,开始进行搜索体验吧!
还有一些问题需要解决:
1. 搜索中文出现乱码,但这并不是nutch的问题,修改tomcat配置文件tomcat6\conf\server.xml。增加URIEncoding/useBodyEncodingForURI两 项。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"
useBodyEncodingForURI="true"/>
2.网页快照出现乱码,修改webapps\nutch-1.0 \cached.jsp,将content = new String(bean.getContent(details))修改为content = new String(bean.getContent(details),"utf-8")。
3.搜索结果页面部分中文出现乱码。应该是由于<jsp:include>导致,但是我还没有找到解决办法,如果谁知道怎么解决,请留言告诉我,谢谢!
下一篇将介绍互联网抓取模式,请继续关注!