nutch 1.4在windows下安裝配置
nutch 1.4在windows下的安裝配置
0、介紹
Apache Nutch 是用java語言開發的開源網頁爬蟲程式。使用Nutch可以自動獲取網頁中的超連結,在檢查壞連結,建立遍歷過的網頁副本以便查詢等方面,將會減少大量的維護工作。也由此產生了Apache Solr。Solr是一個開源的全文搜尋框架,通過Solr我們可以搜尋Nutch遍歷過的網頁。而且Nutch和Solr的整合十分簡易。
Apache Nutch框外支援Solr,這極大地簡化了兩者的整合。Solr不再依附Apache Tomcat來執行舊的Nutch Web應用,也不再依靠Apache Lucene來建立索引。
1、提前需要安裝的工具和軟體
Nutch是Java開發的所以需要下載安裝Java JDK。設定環境變數。
Nutch的指令碼都是用Linux的Shell寫的,所以在Windows平臺需要一個Shell解釋程式。
Cygwin是一個在Windows下的模擬Linux系統程式。
我是下載的setup.exe,選擇線上安裝。具體的安裝過程網上有很多,可以參照。
字尾名tar.gz為linux系統壓縮包,zip為windows系統。
將下載的包,解壓到一個盤的根目錄下。可修改名稱(便於除錯進入)。
Solr作用相當於tomcat+webapp。
將下載的包,解壓到一個盤的根目錄下。
2、驗證Nutch的安裝
開啟cygwin
cd /cygdrive/d/apache-nutch-1.4/runtime/local,cygwin環境下,進入windows某個盤,加cygdrive,cd /cygdrive/d/就相當於進入d盤。在這裡你使用命令時,注意路徑的正確性。
輸入bin/nutch,如果出現命令資訊提示(如下圖),則路徑正確。
3、爬行你的第一個網站
1) 在conf/nutch-site.xml中新增代理名稱(agent name)
<configuration>標籤間加入如下程式碼:
<property>
<name>http.agent.name</name>
<value>My Nutch Spider</value>
</property>
2) 在local目錄下建立資料夾urls,在資料夾中新建seed.txt,例如新增內容為:
注:在使用命令爬行時,會從當前目錄下尋找urls資料夾。例如,cygwin提示符的當前目錄為nutch-1.4/runtime/local時,使用bin/nutch命令就會從local目錄下找尋urls資料夾。
3) 編輯conf下regex-urlfilter.txt,如下將
# accept anything else
+.
替換為:
+^http://([a-z0-9]*\.)*giftour.com/
這表示會遍歷giftour.com域名下的所有URL。
4) 開始爬行
bin/nutch crawl urls -dir crawl -depth 3 -topN 5
-引數意義:
-dir 放入爬行資訊的目錄
-threads 並行執行的爬行執行緒數
-depth 爬行深度
-topN 每層深度上的最大爬行頁面數
執行完後,你會看到crawl 目錄下建立了crawdb、linkdb、segments三個資料夾。
PS:關於nutch-1.4爬取時Exception in thread “main” java.io.IOException: Job failed!
此為cygwin編碼問題,在cygwin安裝目錄下找到.bashrc檔案,將LANG變數給為"en_US.GBK"即:
export LANG="en_US.GBK"
export LC_ALL="en_US.GBK"(如果沒有新增到裡面)
重啟cygwin。也可以直接輸入,export LANG="en_US.GBK",export LC_ALL="en_US.GBK",但好像下次重啟cygwin的時候,又變回去了。
再執行nutch命令即可。
4、驗證Solr
將下載的solr包解壓,cygwin下進入example資料夾,執行命令:
java -jar start.jar
這時會看到solr的啟動資訊,在瀏覽器內輸入:
http://localhost:8983/solr/admin
http://localhost:8983/solr/admin/stats.jsp
跳轉到Admin啟動頁面,Solr成功開啟。
5、整合Solr和Nutch
1) 將NUTCH_RUNTIME_HOME/local/conf目錄(NUTCH_RUNTIME_HOME代指相對路徑,下面含義相同,例如筆者的為:d/apache-nutch-1.4/runtime/local/conf)下的schema.xml拷到APACHE_SOLR_HOME/example/solr/conf目錄下,覆蓋掉原來的schema.xml。
2) APACHE_SOLR_HOME/example下,執行命令,java -jar start.jar重啟solr。
3) 新建一個cygwin,NUTCH_RUNTIME_HOME/local下執行命令:
bin/nutch solrindex http://127.0.0.1:8983/solr crawl/crawdb -linkdb crawl/linkdb crawl/segments/* (127.0.0.1是回送地址,指本地機)。
4) 瀏覽器轉到 http://localhost:8983/solr/admin ,在搜尋框內輸入搜尋關鍵字,看到結果。(貌似匹配不怎麼智慧,未加入中文分詞,可以嘗試輸入數字1,檢視搜尋結果)。
參考: