NUTCH配置初體驗

nutch環境配置備忘:
1、Cygwin安裝
    我使用的是Cygwin本地安裝版,local install,並把所有組件都設爲installed即可。
2、解壓nutch
    將NUTCH-0.9解壓後複製到HOME/Administrator下,或者在Cygwin下使用gunzip命令皆可。
3、安裝JDK
    可能是我的系統最近不正常吧,我的JDK必須安裝在nutch目錄下才能找到(正確設置了環境變量,可是隻要安裝在其它位置,就找不到JDK,如果哪位能知道原因,請指教,非常感謝!)我這裏的安裝路徑是:C:\cygwin\home\Administrator\nutch-0.9\JDK
 
環境變量設置如下:
JAVA_HOME     C:\cygwin\home\Administrator\nutch-0.9\JDK
CLASS_PATH  添加 ;C:\cygwin\home\Administrator\nutch-0.9\JDK\lib
NUTCH_JAVA_HOME  C:\cygwin\home\Administrator\nutch-0.9\JDK
PATH  添加   ;C:\cygwin\home\Administrator\nutch-0.9\JDK\bin
 
4、使用爬蟲之前的準備
首先在bin目錄下新建目錄urls,在urls中新建一個文本文家nutch.txt,將要抓取的網站地址輸入,比如[url]http://www.sina.com.cn/[/url](注意最後的/一定要有)

打開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></configuration>爲:
<configuration>
                <property>
                                <name>http.agent.name</name>
                                <value>HD nutch agent</value>
                </property>
                <property>
                                <name>http.agent.version</name>
                                <value>1.0</value>
                </property>
</configuration>    
保存
5、開始爬
進入nutch目錄,進入bin目錄
$sh nutch crawl urls -dir sina -depth 4 -threads 5 -topN 1000 >&logs/log1.log
         crawl:通知nutch.jar,執行crawlmain方法。
         urls:存放需要爬行的url.txt文件的目錄
         -dir sina 爬行後文件保存的位置
         -depth 2:爬行次數,或者成爲深度,不過還是覺得次數更貼切,建議測試時改爲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即可,原因現在還不知道。
 
6、掛上服務器
當爬取網頁成功之後,開始配置TOMCAT
TOMCAT的安裝目錄是:C:\Program Files\Apache Software Foundation\Tomcat 5.5
 
TOMCAT_HOME   C:\Program Files\Apache Software Foundation\Tomcat 5.5
CALSSPATH 添加: %TOMECAT_HOME%\bin;
 
在服務器關閉的狀態下,刪除TOMCAT中WEBAPPS文件夾中的ROOT文件夾,將nutch-0.9.war拷貝到webapps下,改名爲ROOT.war,啓動TOMCAT,會自動解壓出ROOT文件。
修改/webapps/ROOT/WEB-INF/classes/nutch-site.xml:

    <configuration>
    </configuration>
    換成
    <configuration>
        <property>
            <name>searcher.dir</name>
            <value>C:\cygwin\home\Administrator\nutch-0.9\bin\dlut</value>
        </property>
    </configuration>   
爲了支持中文需要修改tomcat的配置文件,打開tomcat\conf下的server.xml文件,將其中的Connector部分改成如下形式即可:
    
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                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
找到解答
解決方法是:把search.jsp的第151行改成
<jsp:include page="<%= language + \"/include/header.html\"%>"/>
就是在                            ^  添加一個\
之後就正常了。作者說可能是TOMCAT6的特殊問題,可我用TOMCAT5.5~~~不過確實解決了。
 
******************問題解決了的華麗的分割線********************
分析:查看nutch Web應用根目錄下的search.jsp可知,是引號匹配的問題。
<jsp:include page="<%= language + "/include/header.html"%>"/>  //line 152 search.jsp
第一個引號和後面第一個出現的引號進行匹配,而不是和這一行最後一個引號進行匹配,所以問題就出現了。
解決方法:
將該行代碼修改爲:<jsp:include page="<%= language+urlsuffix %>"/>
這裏我們定一個字符串urlsuffix,我們把它定義在language字符串定義之後,
  String language =   // line 116 search.jsp
    ResourceBundle.getBundle("org.nutch.jsp.search", request.getLocale())
    .getLocale().getLanguage();
 String urlsuffix="/include/header.html";
修改完成後,爲確保修改成功,重啓一下Tomcat服務器,進行搜索,不再報錯。
 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章