Nutch採用了一種命令的方式進行工作,其命令可以是對區域網路方式的單一命令也可以是對整個Web進行爬取的分步命令。主要的命令如下:
1. Crawl
Crawl是“org.apache.nutch.crawl.Crawl”的別稱,它是一個完整的爬取和索引過程命令。
使用方法:
Shell代碼
$bin/nutch crawl <urlDir> [-dir d] [-threads n] [-depth i] [-topN]
參數說明:
<urlDir>:包括URL列表的文字檔,它是一個已存在的檔案夾。
[-dir<d>]:Nutch儲存爬取記錄的工作目錄,預設情況下值為:./crawl-[date],其中[date]為當前目期。
[-threads<n>]:Fetcher線程數,覆蓋預設設定檔中的fetcher.threads.fetch值(預設為10)。
[-depth<i>]:Nutch爬蟲迭代的深度,預設值為5。
[-topN<num>]:限制每一次迭代中的前N條記錄,預設值為 Integer.MAX_VALUE。
設定檔:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
crawl-tool.xml
其他檔案:
crawl-urlfilter.txt
2.Readdb
Readdb命令是“org.apache.nutch.crawl.CrawlDbReader”的別稱,返回或者匯出Crawl資料庫(crawldb)中的資訊。
使用方法:
Shell代碼
$bin/nutchreaddb <crawldb> (-stats | -dump <out_dir> | -url<url>)
參數說明:
<crawldb>:crawldb目錄.
[-stats]::在控制台列印所有的統計資訊
[-dump<out_dir>]:匯出crawldb資訊到指定檔案夾中的檔案
[-url<url>]:列印指定URL的統計資訊
執行個體:
Shell代碼
$bin/nutch readdb fullindex/crawldb -stats
CrawlDbstatistics start: fullindex/crawldb
Statisticsfor CrawlDb: fullindex/crawldb
TOTALurls: 468030
retry 0:467361
retry 1:622
retry 2:32
retry 3:15
minscore: 0.0
avgscore: 0.0034686408
maxscore: 61.401
status 1(db_unfetched): 312748
status 2(db_fetched): 80671
status 3(db_gone): 69927
status 4(db_redir_temp): 1497
status 5(db_redir_perm): 3187
CrawlDbstatistics: done
設定檔:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
說明:
-stats命令是一個快速查看爬取資訊的很有用的工作,其輸出資訊表示了:
DB_unfetched:連結到已爬取頁面但還沒有被爬取的頁面數(原因是它們沒有通過url過濾器的過濾,或者包括在了TopN之外被Nutch丟棄)
DB_gone:表示發生了404錯誤或者其他一些臆測的錯誤,這種狀態阻止了對其以後的爬取工作。
DB_fetched表示已爬取和索引的頁面,如果其值為0,那肯定出錯了。
3.readlinkdb
它是"org.apache.nutch.crawl.LinkDbReader"的別稱,匯出連結庫中資訊或者返回其中一個URL資訊。
使用方法:
Shell代碼
$bin/nutchreadlinkdb <linkdb> (-dump <out_dir> | -url <url>)
參數說明:
<linkdb>:linkdb工作目錄
[-dump<out_dir>]:匯出資訊到檔案夾下
[-url<url>]:列印某個URL的統計資訊
執行個體:
Shell代碼
$ bin/nutch readlinkdb fullindex/linkdb -url www.ccnu.edu.cn -no link information
設定檔:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
4.inject
它是"org.apache.nutch.crawl.Injector"的別稱,注入新URL到crawldb中。
使用方法:
Shell代碼
$bin/nutchinjector <crawldb> <urldir>
參數說明:
<crawldb>:crawldb檔案夾
<urldir>:儲存有URL的檔案的檔案夾目錄
設定檔:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
以下設定檔參數影響到了注入方式:
db.default.fetch.interval——按天設定爬取間隔,預設值30.0f
db.score.injected——設定URL的預設打分,預設值1.0f
urlnormalizer.class——正常化URL的類,預設值為org.apache.nutch.net.BasicUrlNormalizer
5.generate
它是“org.apache.nutch.crawl.Generator”,從Crawldb中抓取新的Segment。
使用方法:
Shell代碼
$bin/nutchgenerator <crawldb> <segments_dir> [-topN <num>][-numFetchers <fetchers>] [-adddays <days>]
參數說明:
<crawldb>:crawldb目錄
<segments_dir>:建立的爬取Segment目錄
[-topN<num>]:選取前多少個連結,預設值為Long.MAX_VALUE
[-numFetchers<fetchers>]:抓取分區數量。 Default: Configuration key -> mapred.map.tasks-> 1
[-adddays<days>]: 添加 <days>到目前時間,配置crawling urls,以將很快被爬取db.default.fetch.interval預設值為0。爬取結束時間在目前時間以前的。
樣本:
Shell代碼
$bin/nutchgenerate /my/crawldb /my/segments -topN 100 -adddays 20
設定檔:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
說明:
generate.max.per.host– 設定單個主機最大的URL數量,預設情況下:unlimited。
6. fetch
它是“org.apache.nutch.fetcher.Fetcher”的代稱,它負責一個segment的爬取。
使用方法:
Shell代碼
$bin/nutchfetcher <segment> [-threads <n>] [-noParsing]
參數說明:
<segment>:segment目錄
[-threads<n>]:啟動並執行fetcher線程數預設值為 Configuration Key -> fetcher.threads.fetch-> 10
[-noParsing]:禁用自動解析segment資料
設定檔:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
說明:
Fetcher依賴於多個外掛程式以爬取不同的協議,目前已有的協議及支撐外掛程式如下:
http:
protocol-http
protocol-httpclient
https:
protocol-httpclient
ftp:
protocol-ftp
file:
protocol-file
當爬取網上文檔的時候,不應該使用protocol-file,因為它是用於爬取本地檔案的。如果你想爬取http、https,應當使用protocol-httpclient。
7. parse
它是“org.apache.nutch.parse.ParseSegment”的代稱,它對一個segment運行ParseSegment。
使用方法:
Shell代碼
$bin/nutchparse <segment>
參數說明:
<segment>:Segment檔案夾
設定檔:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
說明:
它依賴於多個外掛程式來解析不同格式的內容,支援的格式及外掛程式有:
內容格式 外掛程式備忘
text/htmlparse-html 使用NekoHTML 或者TagSoup解析HTML
application/x-javascriptparse-js 解析JavaScript 文檔(.js).
audio/mpegparse-mp3 解析MP3 Audio文檔(.mp3).
application/vnd.ms-excelparse-msexcel 解析MSExcel文檔 (.xls).
application/vnd.ms-powerpointparse-mspowerpoint 解析MSPower!Point 文檔
application/mswordparse-msword 解析MSWord文檔
application/rss+xmlparse-rss 解析RSS文檔(.rss)
application/rtfparse-rtf 解析RTF文檔(.rtf)
application/pdfparse-pdf 解析PDF文檔
application/x-shockwave-flashparse-swf 解析Flash 文檔 (.swf)
text-plainparse-text 解析Text文檔(.txt)
application/zipparse-zip 解析Zip文檔(.zip)
othertypes parse-ext 通過基於content-type或者路徑首碼的外部命令來解析文檔
預設情況下只有txt、HTML、JS格式的外掛程式可用,其他的需要在nutch-site.xml中配置使用。
8 .segread
"segread"是"org.apache.nutch.segment.SegmentReader"的代稱,它讀取並匯出Segment資料。
使用方法:
Shell代碼
$bin/nutchsegread <segment>
參數說明:
<segment>:Segment檔案夾
設定檔:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
說明:
在Nutch0.9後的版本中改為了readseg
9 .updatedb
它是“org.apache.nutch.crawl.CrawlDb”的代稱,用fetch過程中擷取的資訊更新crawldb。
使用方法:
Shell代碼
$bin/nutchupdatedb <crawldb> <segment> [-noadditions]
參數說明:
<crawldb>:crawldb目錄
<segment>:已經爬取的segment目錄
[-noadditions]:是否添加新的連結到crawldb中
設定檔:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
10.invertlinks
它是“org.apache.nutch.crawl.LinkDb”的代稱,它用從segment中擷取到的資訊更新linkdb。
使用方法:
Shell代碼
$bin/nutchinvertlinks <linkdb> (-dir segmentsDir | segment1 segment2 ...)
參數說明:
<linkdb>:linkdb目錄
<segment>:segment目錄,可以指定至少一個的檔案夾
設定檔:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
11.index
它是“org.apache.nutch.indexer.Indexer”的代稱,建立一個segment的索引,利用crawldb和linkdb中的資料對索引中的頁面打分。
使用方法:
Shell代碼
$bin/nutchindex <index> <crawldb> <linkdb> <segment> ...
參數說明:
<index>:索引建立後的儲存目錄
<crawldb>:crawldb目錄
<linkdb>:linkdb目錄
<segment>:segment目錄,可以指定多個
設定檔:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
12.merge
Merge是“org.apache.nutch.indexer.IndexMerger”的代稱,它合并多個segment索引。
使用方法:
$bin/nutchmerge [-workingdir <workingdir>] <outputIndex> <indexesDir>...
參數說明:
[-workingdir<workingdir>]:提定工作目錄
<outputIndex>:合并後的索引儲存目錄
<indexesDir>:包含待合并的索引目錄,可以指定多個
設定檔:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
13.mergedb
它是“org.apache.nutch.crawl.CrawlDbMerger”的代稱,合并多個CrawlDb,URLFilter可選擇性地過濾指定內容。
可以合并多個DB到一個中。當你分別運行爬蟲並希望最終合并DB時,它會相當有用。可選擇地,可以運行當前URLFilter過濾資料庫中的URL,以濾去不需要的URL。當只有一個DB時也很有用,它意味著你可以通過這個工作去濾掉那些DB中你不想要的URL。
只用這個工具來過濾也是可能的,在這種情況下,只指定一個crawldb。
如果同一個URL包括在多個CrawlDb中,只有最近版本的才會被保留,即由org.apache.nutch.crawl.CrawlDatum.getFetchTime()值決定的。然而,所有版本的中繼資料被彙總起來,新的值代替先前的值。
使用方法:
$bin/nutchmerge output_crawldb crawldb1 [crawldb2 crawldb3 ...] [-filter]
參數說明:
output_crawldb:CrawlDb輸出檔案夾
crawldb1[crawldb2 crawldb3 ...]:一個或者多個CrawlDb(s).
-filter:採用的URLFilters
設定檔:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
14.mergelinkdb
它是“org.apache.nutch.crawl.LinkDbMerger”的代稱,用於合并多個linkdb,可以選擇性的使用URLFilter來過濾指定內容。
當分別從多個segment群中分布式建立LinkDb而又需要合并為一個時很有用。或者,也可以指定單個LinkDb,只是用它來過濾URL。
只用這個工具來過濾也是可能的,在這種情況下,只指定一個LinkDb。
如果一個URL包含在多個LinkDb中,所有的內部連結被彙總,但是最多db.max.inlinks指定的內鏈數會添加進來。如果被啟用,URLFilter可以應用到所有的目標URL及其內鏈中。如果目標連結被禁止,所有的該目標連結的內鏈將和目標連結一起被移去。如果某些內鏈被禁止,那麼只有他們會被移去,在校正上面提到的最大限制數時他們不會被計算在內。
使用方法:
$bin/nutchmergelinkdb output_linkdb linkdb1 [linkdb2 linkdb3 ...] [-filter]
參數說明:
output_linkdb:輸出linkdb
linkdb1[linkdb2 linkdb3 ...]: 多於一個的輸入LinkDb(s)
-filter:Actual URLFilters to be applied on urls and links in LinkDb(s).
設定檔:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
15.mergesegs
它是“org.apache.nutch.segment.SegmentMerger”的代稱,用於合并多個segment,可以選擇性地輸出到一個或者多個固定大小的segment中。
使用方法:
Shell代碼
$bin/nutchmergesegs output_dir (-dir segments | seg1 seg2 ...) [-filter] [-slice NNNN]
參數說明:
output_dir:結果segment的名稱或者segment片的父目錄
-dirsegments:父目錄,包括多個segment
seg1seg2 ...:segment目錄列表
-filter:通過URLFilters過濾
-sliceNNNN: 建立多個輸出segment,每一個中包括了NNNN個URL。
設定檔:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
16.dedup
“dedup”是“org.apache.nutch.indexer.DeleteDuplicates”的別名,它segmentindexes中去掉重複的頁面。
使用方法:
Shell代碼
$bin/nutchdedup <indexes> ...
參數說明:
<indexes>:indexes索引檔案
設定檔:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
17.plugin
它是“org.apache.nutch.plugin.PluginRepository”的代稱,用於從外掛程式庫中載入一個外掛程式並執行其主方法。
使用方法:
Shell代碼
$bin/nutchplugin <pluginId> <className> [args ...]
參數說明:
<pluginId>:期望執行的外掛程式ID
<className>:包含主方法的類名
[args]:傳入外掛程式的參數
設定檔:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml