2015-10-08 83 views
0

我建立了Nutch併爲它提供了一個可以抓取的URL的種子列表。我對它進行了配置,以便它不會抓取我的種子列表之外的任何內容。種子名單包含150萬個URL。我跟着引導和拉開序幕Nutch的,像這樣:獲取Nutch爬行狀態?

bin/nutch inject crawl/crawldb urls 
bin/nutch generate crawl/crawldb crawl/segments 
s1=`ls -d crawl/segments/2* | tail -1` 
bin/nutch fetch $s1 
bin/nutch parse $s1 
bin/nutch invertlinks crawl/linkdb -dir crawl/segments 
bin/nutch solrindex http://127.0.0.1:8983/solr/ crawl/crawldb -linkdb crawl/linkdb $s1 -addBinaryContent -base64 

題外話:我真希望我能知道如何抓取,並在同一時間指數 (例如,抓取網頁 - >指標吧,爬行未來頁面), ,因爲我目前必須等待整個抓取才能完成 ,然後再根本沒有任何索引。

無論如何,從檢查hadoop.log,我相信我已經在48小時內抓取了大約40k鏈接。不過,我想確保它能正確抓取所有內容。我還想看看哪些鏈接已被抓取,以及哪些鏈接已被刪除。我已經閱讀了所有的文檔,我似乎無法弄清楚如何獲得Nutch爬行的狀態,除非它是作爲一項工作開始的。

我使用Solr 4.10運行Nutch 1.10。

+1

>如何在同一時間 抓取和索引看一看[https://github.com/DigitalPebble/storm-crawler。 Nutch是批量驅動的,它可以一步一步完成任務。 [http://digitalpebble.blogspot.co.uk/2015/09/index-web-with-aws-cloudsearch.html]包含Nutch和SC之間的比較,您可能會覺得有用。 +1 Sujen建議關於nutch readdb命令。您可以指定給定的URL來獲取其狀態,但正如他指出的那樣,這隻會在爬行迭代結束時更新 –

回答

3

截至目前,您無法從日誌中看到正在抓取的抓取狀態。只有在fetch-parse-updatedb作業結束​​後才能查詢crawldb。

我想你在運行bin/nutch solrindex之前缺少bin/nutch updatedb作業。

正如您所提到的,您似乎沒有使用./bin/crawl腳本,而是單獨調用每個作業。

對於像您一樣大的抓取,我可以想到的一種方式是使用./bin/crawl腳本,默認情況下,該腳本會爲每次迭代生成50k個URL。而且每次迭代之後,你可以使用:在給定https://wiki.apache.org/nutch/CommandLineOptions

./bin/nutch readdb <crawl_db> -stats 

命令檢查crawldb狀態。

如果要更頻繁地檢查更新,請在./bin/crawl腳本中更改(降低)'-topN'參數(傳遞給生成作業)。現在,通過改變迭代次數,您可以抓取整個種子列表。

希望這有助於:)