關(guān)鍵字: nutch 命令
Nutch采用了一種命令的方式進(jìn)行工作,其命令可以是對局域網(wǎng)方式的單一命令也可以是對整個(gè)Web進(jìn)行爬取的分步命令。主要的命令如下:
1. Crawl
Crawl是“org.apache.nutch.crawl.Crawl”的別稱,它是一個(gè)完整的爬取和索引過程命令。
使用方法:
Shell代碼
bin/nutch crawl <urlDir> [-dir d] [-threads n] [-depth i] [-topN]
bin/nutch crawl <urlDir> [-dir d] [-threads n] [-depth i] [-topN]
參數(shù)說明:
<urlDir>:包括URL列表的文本文件,它是一個(gè)已存在的文件夾。
[-dir <d>]:Nutch保存爬取記錄的工作目錄,默認(rèn)情況下值為:./crawl-[date],其中[date]為當(dāng)前目期。
[-threads <n>]:Fetcher線程數(shù),覆蓋默認(rèn)配置文件中的fetcher.threads.fetch值(默認(rèn)為10)。
[-depth <i>]:Nutch爬蟲迭代的深度,默認(rèn)值為5。
[-topN <num>]:限制每一次迭代中的前N條記錄,默認(rè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”的別稱,返回或者導(dǎo)出Crawl數(shù)據(jù)庫(crawldb)中的信息。
使用方法:
Shell代碼
bin/nutch rseaddb <crawldb> (-stats | -dump <out_dir> | -url <url>)
bin/nutch rseaddb <crawldb> (-stats | -dump <out_dir> | -url <url>)
參數(shù)說明:
<crawldb>:crawldb目錄.
[-stats]::在控制臺(tái)打印所有的統(tǒng)計(jì)信息
[-dump <out_dir>]:導(dǎo)出crawldb信息到指定文件夾中的文件
[-url <url>]:打印指定URL的統(tǒng)計(jì)信息
實(shí)例:
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
說明:
-stats命令是一個(gè)快速查看爬取信息的很有用的工作,其輸出信息表示了:
DB_unfetched:鏈接到已爬取頁面但還沒有被爬取的頁面數(shù)(原因是它們沒有通過url過濾器的過濾,或者包括在了TopN之外被Nutch丟棄)
DB_gone:表示發(fā)生了404錯(cuò)誤或者其他一些臆測的錯(cuò)誤,這種狀態(tài)阻止了對其以后的爬取工作。
DB_fetched表示已爬取和索引的頁面,如果其值為0,那肯定出錯(cuò)了。
3. readlinkdb
它是"org.apache.nutch.crawl.LinkDbReader"的別稱,導(dǎo)出鏈接庫中信息或者返回其中一個(gè)URL信息。
使用方法:
Shell代碼
Bin/nutch readlinkdb <linkdb> (-dump <out_dir> | -url <url>)
Bin/nutch readlinkdb <linkdb> (-dump <out_dir> | -url <url>)
參數(shù)說明:
<linkdb>:linkdb工作目錄
[-dump <out_dir>]:導(dǎo)出信息到文件夾下
[-url <url>]:打印某個(gè)URL的統(tǒng)計(jì)信息
實(shí)例:
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>
參數(shù)說明:
<crawldb>:crawldb文件夾
<urldir>:保存有URL的文件的文件夾目錄
配置文件:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
以下配置文件參數(shù)影響到了注入方式:
db.default.fetch.interval——按天設(shè)置爬取間隔,默認(rèn)值30.0f
db.score.injected——設(shè)置URL的默認(rèn)打分,默認(rèn)值1.0f
urlnormalizer.class——規(guī)范化URL的類,默認(rèn)值為 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>]
參數(shù)說明:
<crawldb>:crawldb目錄
<segments_dir>:新建的爬取Segment目錄
[-topN <num>]:選取前多少個(gè)鏈接,默認(rèn)值為Long.MAX_VALUE
[-numFetchers <fetchers>]:抓取分區(qū)數(shù)量。 Default: Configuration key -> mapred.map.tasks -> 1
[-adddays <days>]: 添加 <days>到當(dāng)前時(shí)間,配置crawling urls ,以將很快被爬取db.default.fetch.interval默認(rèn)值為0。爬取結(jié)束時(shí)間在當(dāng)前時(shí)間以前的。
示例:
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 – 設(shè)置單個(gè)主機(jī)最大的URL數(shù)量,默認(rèn)情況下:unlimited。
6. fetch
它是“org.apache.nutch.fetcher.Fetcher”的代稱,它負(fù)責(zé)一個(gè)segment的爬取。
使用方法:
Shell代碼
bin/nutch fetcher <segment> [-threads <n>] [-noParsing]
bin/nutch fetcher <segment> [-threads <n>] [-noParsing]
參數(shù)說明:
<segment>:segment目錄
[-threads <n>]:運(yùn)行的fetcher線程數(shù)默認(rèn)值為 Configuration Key -> fetcher.threads.fetch -> 10
[-noParsing]:禁用自動(dòng)解析segment數(shù)據(jù)
配置文件:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
說明:
Fetcher依賴于多個(gè)插件以爬取不同的協(xié)議,目前已有的協(xié)議及支撐插件如下:
http:
protocol-http
protocol-httpclient
https:
protocol-httpclient
ftp:
protocol-ftp
file:
protocol-file
當(dāng)爬取網(wǎng)上文檔的時(shí)候,不應(yīng)該使用protocol-file,因?yàn)樗怯糜谂廊”镜匚募?。如果你想爬取http、https,應(yīng)當(dāng)使用protocol-httpclient。
7. parse
它是“org.apache.nutch.parse.ParseSegment”的代稱,它對一個(gè)segment運(yùn)行ParseSegment。
使用方法:
Shell代碼
bin/nutch parse <segment>
bin/nutch parse <segment>
參數(shù)說明:
<segment>:Segment文件夾
配置文件:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
說明:
它依賴于多個(gè)插件來解析不同格式的內(nèi)容,支持的格式及插件有:
內(nèi)容格式 插件 備注
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或者路徑前綴的外部命令來解析文檔
默認(rèn)情況下只有txt、HTML、JS格式的插件可用,其他的需要在nutch-site.xml中配置使用。
8 . segread
"segread" 是"org.apache.nutch.segment.SegmentReader"的代稱,它讀取并導(dǎo)出Segment數(shù)據(jù)。
使用方法:
Shell代碼
bin/nutch segread <segment>
bin/nutch segread <segment>
參數(shù)說明:
<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]
參數(shù)說明:
<crawldb>:crawldb目錄
<segment>:已經(jīng)爬取的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 ...)
參數(shù)說明:
<linkdb>: linkdb目錄
<segment>: segment目錄,可以指定至少一個(gè)的文件夾
配置文件:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
11. index
它是“org.apache.nutch.indexer.Indexer”的代稱,創(chuàng)建一個(gè)segment的索引,利用crawldb和linkdb中的數(shù)據(jù)對索引中的頁面打分。
使用方法:
Shell代碼
bin/nutch index <index> <crawldb> <linkdb> <segment> ...
bin/nutch index <index> <crawldb> <linkdb> <segment> ...
參數(shù)說明:
<index>: 索引創(chuàng)建后的保存目錄
<crawldb>: crawldb目錄
<linkdb>: linkdb目錄
<segment>: segment目錄,可以指定多個(gè)
配置文件:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
12. merge
Merge是“org.apache.nutch.indexer.IndexMerger”的代稱,它合并多個(gè)segment索引。
使用方法:
bin/nutch merge [-workingdir <workingdir>] <outputIndex> <indexesDir> ...
參數(shù)說明:
[-workingdir <workingdir>]:提定工作目錄
<outputIndex>:合并后的索引存儲(chǔ)目錄
<indexesDir>:包含待合并的索引目錄,可以指定多個(gè)
配置文件:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
13. mergedb
它是“org.apache.nutch.crawl.CrawlDbMerger”的代稱,合并多個(gè)CrawlDb,URLFilter可選擇性地過濾指定內(nèi)容。
可以合并多個(gè)DB到一個(gè)中。當(dāng)你分別運(yùn)行爬蟲并希望最終合并DB時(shí),它會(huì)相當(dāng)有用??蛇x擇地,可以運(yùn)行當(dāng)前URLFilter過濾數(shù)據(jù)庫中的URL,以濾去不需要的URL。當(dāng)只有一個(gè)DB時(shí)也很有用,它意味著你可以通過這個(gè)工作去濾掉那些DB中你不想要的URL。
只用這個(gè)工具來過濾也是可能的,在這種情況下,只指定一個(gè)crawldb。
如果同一個(gè)URL包括在多個(gè)CrawlDb中,只有最近版本的才會(huì)被保留,即由org.apache.nutch.crawl.CrawlDatum.getFetchTime()值決定的。然而,所有版本的元數(shù)據(jù)被聚合起來,新的值代替先前的值。
使用方法:
bin/nutch merge output_crawldb crawldb1 [crawldb2 crawldb3 ...] [-filter]
參數(shù)說明:
output_crawldb:CrawlDb輸出文件夾
crawldb1 [crawldb2 crawldb3 ...]:一個(gè)或者多個(gè)CrawlDb(s).
-filter:采用的URLFilters
配置文件:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
14. mergelinkdb
它是“org.apache.nutch.crawl.LinkDbMerger”的代稱,用于合并多個(gè)linkdb,可以選擇性的使用URLFilter來過濾指定內(nèi)容。
當(dāng)分別從多個(gè)segment群中分布式建立LinkDb而又需要合并為一個(gè)時(shí)很有用。或者,也可以指定單個(gè)LinkDb,只是用它來過濾URL。
只用這個(gè)工具來過濾也是可能的,在這種情況下,只指定一個(gè)LinkDb。
如果一個(gè)URL包含在多個(gè)LinkDb中,所有的內(nèi)部鏈接被聚合,但是最多db.max.inlinks 指定的內(nèi)鏈數(shù)會(huì)添加進(jìn)來。 如果被激活,URLFilter可以應(yīng)用到所有的目標(biāo)URL及其內(nèi)鏈中。如果目標(biāo)鏈接被禁止,所有的該目標(biāo)鏈接的內(nèi)鏈將和目標(biāo)鏈接一起被移去。如果某些內(nèi)鏈被禁止,那么只有他們會(huì)被移去,在校驗(yàn)上面提到的最大限制數(shù)時(shí)他們不會(huì)被計(jì)算在內(nèi)。
使用方法:
bin/nutch mergelinkdb output_linkdb linkdb1 [linkdb2 linkdb3 ...] [-filter]
參數(shù)說明:
output_linkdb:輸出linkdb
linkdb1 [linkdb2 linkdb3 ...]: 多于一個(gè)的輸入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”的代稱,用于合并多個(gè)segment,可以選擇性地輸出到一個(gè)或者多個(gè)固定大小的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]
參數(shù)說明:
output_dir:結(jié)果segment的名稱或者segment片的父目錄
-dir segments:父目錄,包括多個(gè)segment
seg1 seg2 ...:segment目錄列表
-filter:通過URLFilters過濾
-slice NNNN: 創(chuàng)建多個(gè)輸出segment,每一個(gè)中包括了NNNN個(gè)URL。
配置文件:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
16. dedup
“dedup”是“org.apache.nutch.indexer.DeleteDuplicates”的別名,它segment indexes中去掉重復(fù)的頁面。
使用方法:
Shell代碼
bin/nutch dedup <indexes> ...
bin/nutch dedup <indexes> ...
參數(shù)說明:
<indexes>:indexes索引文件
配置文件:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml
17. plugin
它是“org.apache.nutch.plugin.PluginRepository”的代稱,用于從插件庫中加載一個(gè)插件并執(zhí)行其主方法。
使用方法:
Shell代碼
bin/nutch plugin <pluginId> <className> [args ...]
bin/nutch plugin <pluginId> <className> [args ...]參數(shù)說明:
<pluginId>:期望執(zhí)行的插件ID
<className>:包含主方法的類名
[args]:傳入插件的參數(shù)
配置文件:
hadoop-default.xml
hadoop-site.xml
nutch-default.xml
nutch-site.xml