關鍵字: nutch 命令
Nutch採用了一種命令的方式進行工做,其命令能夠是對局域網方式的單一命令也能夠是對整個Web進行爬取的分步命令。主要的命令以下: javascript
1. Crawl
Crawl是「org.apache.nutch.crawl.Crawl」的別稱,它是一個完整的爬取和索引過程命令。
使用方法:
Shell代碼
bin/nutch crawl <urlDir> [-dir d] [-threads n] [-depth i] [-topN] html
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。 java
配置文件:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
crawl-tool.xml 數據庫
其餘文件:
crawl-urlfilter.txt apache
2. Readdb
Readdb命令是「org.apache.nutch.crawl.CrawlDbReader」的別稱,返回或者導出Crawl數據庫(crawldb)中的信息。
使用方法:
Shell代碼
bin/nutch rseaddb <crawldb> (-stats | -dump <out_dir> | -url <url>) app
bin/nutch rseaddb <crawldb> (-stats | -dump <out_dir> | -url <url>)
參數說明:
<crawldb>:crawldb目錄.
[-stats]::在控制檯打印全部的統計信息
[-dump <out_dir>]:導出crawldb信息到指定文件夾中的文件
[-url <url>]:打印指定URL的統計信息
實例:
Shell代碼
$ bin/nutch readdb fullindex/crawldb -stats 分佈式
$ bin/nutch readdb fullindex/crawldb -stats 工具
CrawlDb statistics start: fullindex/crawldb
Statistics for CrawlDb: fullindex/crawldb
TOTAL urls: 468030
retry 0: 467361
retry 1: 622
retry 2: 32
retry 3: 15
min score: 0.0
avg score: 0.0034686408
max score: 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
CrawlDb statistics: done
配置文件:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml oop
說明:
-stats命令是一個快速查看爬取信息的頗有用的工做,其輸出信息表示了:
DB_unfetched:連接到已爬取頁面但尚未被爬取的頁面數(緣由是它們沒有經過url過濾器的過濾,或者包括在了TopN以外被Nutch丟棄)
DB_gone:表示發生了404錯誤或者其餘一些臆測的錯誤,這種狀態阻止了對其之後的爬取工做。
DB_fetched表示已爬取和索引的頁面,若是其值爲0,那確定出錯了。 fetch
3. readlinkdb
它是"org.apache.nutch.crawl.LinkDbReader"的別稱,導出連接庫中信息或者返回其中一個URL信息。
使用方法:
Shell代碼
Bin/nutch readlinkdb <linkdb> (-dump <out_dir> | -url <url>)
Bin/nutch readlinkdb <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
$ 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/nutch injector <crawldb> <urldir>
bin/nutch injector <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/nutch generator <crawldb> <segments_dir> [-topN <num>] [-numFetchers <fetchers>] [-adddays <days>]
bin/nutch generator <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/nutch generate /my/crawldb /my/segments -topN 100 -adddays 20
bin/nutch generate /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/nutch fetcher <segment> [-threads <n>] [-noParsing]
bin/nutch fetcher <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/nutch parse <segment>
bin/nutch parse <segment>
參數說明:
<segment>:Segment文件夾
配置文件:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
說明:
它依賴於多個插件來解析不一樣格式的內容,支持的格式及插件有:
內容格式 插件 備註
text/html parse-html 使用NekoHTML 或者TagSoup解析HTML
application/x-javascript parse-js 解析JavaScript 文檔(.js).
audio/mpeg parse-mp3 解析MP3 Audio文檔(.mp3).
application/vnd.ms-excel parse-msexcel 解析MSExcel文檔 (.xls).
application/vnd.ms-powerpoint parse-mspowerpoint 解析MSPower!Point 文檔
application/msword parse-msword 解析MSWord文檔
application/rss+xml parse-rss 解析RSS文檔(.rss)
application/rtf parse-rtf 解析RTF文檔(.rtf)
application/pdf parse-pdf 解析PDF文檔
application/x-shockwave-flash parse-swf 解析Flash 文檔 (.swf)
text-plain parse-text 解析Text文檔(.txt)
application/zip parse-zip 解析Zip文檔(.zip)
other types parse-ext 經過基於content-type或者路徑前綴的外部命令來解析文檔
默認狀況下只有txt、HTML、JS格式的插件可用,其餘的須要在nutch-site.xml中配置使用。
8 . segread
"segread" 是"org.apache.nutch.segment.SegmentReader"的代稱,它讀取並導出Segment數據。
使用方法:
Shell代碼
bin/nutch segread <segment>
bin/nutch segread <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/nutch updatedb <crawldb> <segment> [-noadditions]
bin/nutch updatedb <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/nutch invertlinks <linkdb> (-dir segmentsDir | segment1 segment2 ...)
bin/nutch invertlinks <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/nutch index <index> <crawldb> <linkdb> <segment> ...
bin/nutch index <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/nutch merge [-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/nutch merge 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/nutch mergelinkdb 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/nutch mergesegs output_dir (-dir segments | seg1 seg2 ...) [-filter] [-slice NNNN]
bin/nutch mergesegs output_dir (-dir segments | seg1 seg2 ...) [-filter] [-slice NNNN]
參數說明:
output_dir:結果segment的名稱或者segment片的父目錄
-dir segments:父目錄,包括多個segment
seg1 seg2 ...:segment目錄列表
-filter:經過URLFilters過濾
-slice NNNN: 建立多個輸出segment,每個中包括了NNNN個URL。
配置文件:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
16. dedup
「dedup」是「org.apache.nutch.indexer.DeleteDuplicates」的別名,它segment indexes中去掉重複的頁面。
使用方法:
Shell代碼
bin/nutch dedup <indexes> ...
bin/nutch dedup <indexes> ...
參數說明:
<indexes>:indexes索引文件
配置文件:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
17. plugin
它是「org.apache.nutch.plugin.PluginRepository」的代稱,用於從插件庫中加載一個插件並執行其主方法。
使用方法:
Shell代碼
bin/nutch plugin <pluginId> <className> [args ...]
bin/nutch plugin <pluginId> <className> [args ...]參數說明:
<pluginId>:指望執行的插件ID
<className>:包含主方法的類名
[args]:傳入插件的參數
配置文件: hadoop-default.xml hadoop-site.xml nutch-default.xml nutch-site.xml