现在的位置: 首页 > 综合 > 正文

Nutch 使用入门(一)——准备工作及Intranet抓取

2013年01月27日 ⁄ 综合 ⁄ 共 2126字 ⁄ 字号 评论关闭
Java代码  收藏代码
  1. /** 
  2.  *本人亦初学者,如有不正确的地方请多多指教。谢谢! 
  3.  **/  

 

环境要求:

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命令。典型的命令如下:

Java代码  收藏代码
  1. 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文件,修改其内容如下:

Java代码  收藏代码
  1. <configuration>  
  2.     <property>  
  3.         <name>http.agent.name</name>  
  4.         <value>yourAgentName</value>  
  5.     </property>  
  6.     <property>  
  7.         <name>searcher.dir</name>  
  8.         <value>D:/nutch-1.0/javaeye</value>  
  9.     </property>  
  10. </configuration>  

  重新启动Tomcat。通过浏览器访问:http://localhost:8080/nutch-1.0 ,将看到如下搜索页面:

  输入你希望搜索的关键字,开始进行搜索体验吧!

 

 

 还有一些问题需要解决:

 

 1. 搜索中文出现乱码,但这并不是nutch的问题,修改tomcat配置文件tomcat6\conf\server.xml。增加URIEncoding/useBodyEncodingForURI两项。

Java代码  收藏代码
  1. <Connector port="8080" protocol="HTTP/1.1"  
  2. connectionTimeout="20000"  
  3. redirectPort="8443"  
  4. URIEncoding="UTF-8"  
  5. 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>导致,但是我还没有找到解决办法,如果谁知道怎么解决,请留言告诉我,谢谢!

 

 

下一篇将介绍互联网抓取模式,请继续关注!

抱歉!评论已关闭.