nutch是一個開源的網絡爬蟲項目,更具體些是一個爬蟲軟體,可以直接用于抓取網頁内容。
現在nutch分為兩個版本,1.x和2.x。1.x最新版本為1.7,2.x最新版本為2.2.1。兩個版本的主要差別在于底層的存儲不同。
1.x版本是基于hadoop架構的,底層存儲使用的是hdfs,而2.x通過使用apache gora,使得nutch可以通路hbase、accumulo、cassandra、mysql、datafileavrostore、avrostore等nosql。
nutch1.x從1.7版本開始不再提供完整的部署檔案,隻提供源代碼檔案及相關的build.xml檔案,這就要求使用者自己編譯nutch,而整個nutch2.x版本都不提供編譯完成的檔案,是以想要學習nutch2.2.1的功能,就必須自己手動編譯檔案。
有可能你會得到如下錯誤:
解決辦法:
下載下傳sonar-ant-task-2.1.jar,将其拷貝到apache-nutch-2.2.1目錄下面
修改build.xml,引入上面添加的jar包:
nutch使用ivy進行建構,故編譯需要很長時間,如果編譯時間過長,建議修改maven倉庫位址,修改方法:
通過用<code>http://mirrors.ibiblio.org/maven2/</code>替換<code>ivy/下ivysettings.xml</code>中的<code>http://repo1.maven.org/maven2/</code>來解決。代碼位置為:
編譯之後的目錄如下:
可以看到編譯之後多了兩個目錄:build和runtime
由于nutch2.x版本存儲采用gora通路cassandra、hbase、accumulo、avro等,需要在該檔案中制定gora屬性,比如指定預設的存儲方式<code>gora.datastore.default= org.apache.gora.hbase.store.hbasestore</code>,該屬性的值可以在nutch-default.xml中查找<code>storage.data.store.class</code>屬性取得,在不做gora.properties檔案修改的情況下,存儲類為<code>org.apache.gora.memory.store.memstore</code>,該類将資料存儲在記憶體中,僅用于測試目的。
修改 <code>conf/nutch-site.xml</code>
修改 <code>ivy/ivy.xml</code>
修改 <code>conf/gora.properties</code>,確定hbasestore被設定為預設的存儲,
由于建索引的時候需要使用solr,是以我們需要安裝并啟動一個solr伺服器。
驗證是否啟動成功
将<code>apache-nutch-2.2.1/conf/schema-solr4.xml</code>拷貝到<code>solr-4.8.0/solr/collection1/conf/schema.xml</code>,并在<code><fields>...</fields></code>最後添加一行:
重新開機solr,
編譯後的腳本在 runtime/local/bin 目錄下,可以運作指令檢視使用方法:
crawl指令:
nutch指令:
接下來可以抓取網頁了。