WinXP下创建Nutch引擎

 nutch环境配置

 

1、Cygwin安装 

 我使用的是Cygwin本地安装版,local install,并把所有组件都设为installed即可。

2、解压nutch 

将NUTCH-1.2解压,目前1.3版本还不行

3、安装JDK 

环境变量设置如下:(此处可以只设置NUTCH_JAVA_HOME)
CLASS_PATH  添加 ;C:\Program Files\Java\jdk1.6.0_24
JAVA_HOME为C:\Program Files\Java\jdk1.6.0_24 
NUTCH_JAVA_HOME为C:\Program Files\Java\jdk1.6.0_24 。注意不用加什么引号之类的


4、使用爬虫之前的准备
首先在bin目录下新建目录urls,在urls中新建一个文本文家nutch.txt,将要抓取的网站地址输入,比如
http://www.sina.com.cn/(注意最后的/一定要有)

打开conf\crawl-urlfilter.txt文件,将
# accept hosts in MY.DOMAIN.NAME
+^http://([a-z0-9]*\.)*MY.DOMAIN.NAME/

改为
# accept hosts in MY.DOMAIN.NAME
+^http://([a- z0-9]*\.)*sina.com.cn/(这里也要有/呦)

打开nutch/conf/nutch-site.xml文件,修改< /configuration>为:

               
                                http.agent.name
                                xhyzfl(这里随意写些东西)
               

               
                                http.agent.version
                                1.0
               

   
保存

5、开始爬
进入nutch目录,进入bin目录
$bin/nutch crawl url.txt -dir crawled -depth 3 -threads 4 >& crawl.log(要先建立自己的日志目录)(url地址为bin目录下,要写全名)
         crawl:通知nutch.jar,执行crawl的main方法。
         urls:存放需要爬行的url.txt文件的目录
         -dir sina 爬行后文件保存的位置
         -depth 3:爬行次数,或者成为深度,不过还是觉得次数更贴切,建议测试时改为1。
         -threads 指定并发的进程 这是设定为 4
         -topN :一个网站保存的最大页面数。
**注意sina文件夹不能存在,会报错

曾经出现的错误:
Generator: 0 records selected for fetching, exiting ...
Stopping at depth=0 - no more URLs to fetch.
No URLs to fetch - check your seed list and URL filters.
解决方法:在urls的 nutch.txt中再添加一个URL即可,原因现在还不知道。

等待大约2分多钟后,程序运行结束。读者会发现在nutch-0.7.1目录下被创建了一个名为crawled的文件夹,同时还生成一个名为crawl.log的日志文件。利用这一日志文件,我们可以分析可能遇到的任何错误。另外,在上述命令的参数中,dir指定抓取内容所存放的目录,depth表示以要抓取网站顶级网址为起点的爬行深度,threads指定并发的线程数。

6、使用Tomcat进行搜索测试


当爬取网页成功之后,开始配置 TOMCAT

(1)将tomcat/webapps下的ROOT文件夹名改成ROOT1;

(2)在服务器关闭的状态下,将nutch-0.9.war拷贝到webapps下,改名为ROOT.war,启动 TOMCAT,会自动解压出ROOT文件。

(3)修改/webapps/ROOT /WEB-INF/classes/nutch-site.xml:

   
   

    换成
   
       
            searcher.dir
            >(修改为自己的下载目录)value>
       

   
  

(4)为了支持中文需要修改 tomcat的配置文件,打开tomcat\conf下的server.xml文件,将其中的Connector部分改成如下形式即可:
   
                enableLookups="false"
                redirectPort="8443"
                acceptCount="100"
                connectionTimeout="20000"
                disableUploadTimeout="true"
                URIEncoding="UTF-8" useBodyEncodingForURI="true" />
    注意最后一行的两项是新加的.
利用tomcat搜索  
    重启tomcat,在浏览器中输入:http://127.0.0.1:8080
    出现nutch搜索界面,
    在搜索框中输入java并搜索,将看到你的搜索结果

***曾经出现的错误
org.apache.jasper.JasperException: /search.jsp(151,22) Attribute value  language + "/include/header.html" is quoted with " which must be escaped when used within the value
这个错误困扰了我很长时间,后来在http://news.skelter.net/articles/2008/09/24/nutch-0-9-quoted-with-must-be-escaped
找到解答
解决方法是:把search.jsp的第151行改成
"/>
就是在                            ^  添加一个\
之后就正常了。作者说可能是TOMCAT6的特殊问题,可我用 TOMCAT5.5~~~不过确实解决了。

******************问题解决了的华丽的分割线********************
****引自http://blog.sina.com.cn/s/blog_4cc16fc50100bqxe.html****
分析:查看nutch Web应用根目录下的search.jsp可知,是引号匹配的问题。
"/>  //line 152 search.jsp
第一个引号和后面第一个出现的引号进行匹配,而不是和这一行最后一个引号进行匹配,所以问题就出现了。
解决方法:
将该行代码修改为:
这里我们定一个字符串urlsuffix,我们把它定义在language字符串定义之后,
  String language =   // line 116 search.jsp
    ResourceBundle.getBundle("org.nutch.jsp.search", request.getLocale())
    .getLocale().getLanguage();
String urlsuffix="/include/header.html";
修改完成后,为确保修改成功,重启一下Tomcat服务器,进行搜索,不再报错。

 

参考文章:

Nutch 使用之锋芒初试:http://blog.csdn.net/zjzcl/article/details/593138

搜索引擎Nutch初试:http://lwcheng1985.iteye.com/blog/713592

你可能感兴趣的:(Nutch)