開發(fā)網(wǎng)絡(luò)爬蟲應(yīng)該怎樣選擇爬蟲框架
來源:新能源網(wǎng)
時間:2024-08-17 11:55:10
熱度:
開發(fā)網(wǎng)絡(luò)爬蟲應(yīng)該怎樣選擇爬蟲框架【專家解說】:有些人問,開發(fā)網(wǎng)絡(luò)爬蟲應(yīng)該選擇Nutch、Crawler4j、WebMagic、scrapy、WebCollector還是其他的?這里
【專家解說】:有些人問,開發(fā)網(wǎng)絡(luò)爬蟲應(yīng)該選擇Nutch、Crawler4j、WebMagic、scrapy、WebCollector還是其他的?這里按照我的經(jīng)驗(yàn)隨便扯淡一下:
上面說的爬蟲,基本可以分3類:
1.分布式爬蟲:Nutch
2.JAVA單機(jī)爬蟲:Crawler4j、WebMagic、WebCollector
3. 非JAVA單機(jī)爬蟲:scrapy
第一類:分布式爬蟲
爬蟲使用分布式,主要是解決兩個問題:
1)海量URL管理
2)網(wǎng)速
現(xiàn)在比較流行的分布式爬蟲,是Apache的Nutch。但是對于大多數(shù)用戶來說,Nutch是這幾類爬蟲里,最不好的選擇,理由如下:
1)Nutch是為搜索引擎設(shè)計的爬蟲,大多數(shù)用戶是需要一個做精準(zhǔn)數(shù)據(jù)爬?。ň槿。┑呐老x。Nutch運(yùn)行的一套流程里,有三分之二是為了搜索引擎而設(shè)計的。對精抽取沒有太大的意義。也就是說,用Nutch做數(shù)據(jù)抽取,會浪費(fèi)很多的時間在不必要的計算上。而且如果你試圖通過對Nutch進(jìn)行二次開發(fā),來使得它適用于精抽取的業(yè)務(wù),基本上就要破壞Nutch的框架,把Nutch改的面目全非,有修改Nutch的能力,真的不如自己重新寫一個分布式爬蟲框架了。
2)Nutch依賴hadoop運(yùn)行,hadoop本身會消耗很多的時間。如果集群機(jī)器數(shù)量較少,爬取速度反而不如單機(jī)爬蟲快。
3)Nutch雖然有一套插件機(jī)制,而且作為亮點(diǎn)宣傳。可以看到一些開源的Nutch插件,提供精抽取的功能。但是開發(fā)過Nutch插件的人都知道,Nutch的插件系統(tǒng)有多蹩腳。利用反射的機(jī)制來加載和調(diào)用插件,使得程序的編寫和調(diào)試都變得異常困難,更別說在上面開發(fā)一套復(fù)雜的精抽取系統(tǒng)了。而且Nutch并沒有為精抽取提供相應(yīng)的插件掛載點(diǎn)。Nutch的插件有只有五六個掛載點(diǎn),而這五六個掛載點(diǎn)都是為了搜索引擎服務(wù)的,并沒有為精抽取提供掛載點(diǎn)。大多數(shù)Nutch的精抽取插件,都是掛載在“頁面解析”(parser)這個掛載點(diǎn)的,這個掛載點(diǎn)其實(shí)是為了解析鏈接(為后續(xù)爬取提供URL),以及為搜索引擎提供一些易抽取的網(wǎng)頁信息(網(wǎng)頁的meta信息、text文本)。
4)用Nutch進(jìn)行爬蟲的二次開發(fā),爬蟲的編寫和調(diào)試所需的時間,往往是單機(jī)爬蟲所需的十倍時間不止。了解Nutch源碼的學(xué)習(xí)成本很高,何況是要讓一個團(tuán)隊(duì)的人都讀懂Nutch源碼。調(diào)試過程中會出現(xiàn)除程序本身之外的各種問題(hadoop的問題、hbase的問題)。
5)很多人說Nutch2有g(shù)ora,可以持久化數(shù)據(jù)到avro文件、hbase、mysql等。很多人其實(shí)理解錯了,這里說的持久化數(shù)據(jù),是指將URL信息(URL管理所需要的數(shù)據(jù))存放到avro、hbase、mysql。并不是你要抽取的結(jié)構(gòu)化數(shù)據(jù)。其實(shí)對大多數(shù)人來說,URL信息存在哪里無所謂。
6)Nutch2的版本目前并不適合開發(fā)。官方現(xiàn)在穩(wěn)定的Nutch版本是nutch2.2.1,但是這個版本綁定了gora-0.3。如果想用hbase配合nutch(大多數(shù)人用nutch2就是為了用hbase),只能使用0.90版本左右的hbase,相應(yīng)的就要將hadoop版本降到hadoop 0.2左右。而且nutch2的官方教程比較有誤導(dǎo)作用,Nutch2的教程有兩個,分別是Nutch1.x和Nutch2.x,這個Nutch2.x官網(wǎng)上寫的是可以支持到hbase 0.94。但是實(shí)際上,這個Nutch2.x的意思是Nutch2.3之前、Nutch2.2.1之后的一個版本,這個版本在官方的SVN中不斷更新。而且非常不穩(wěn)定(一直在修改)。
所以,如果你不是要做搜索引擎,盡量不要選擇Nutch作為爬蟲。有些團(tuán)隊(duì)就喜歡跟風(fēng),非要選擇Nutch來開發(fā)精抽取的爬蟲,其實(shí)是沖著Nutch的名氣(Nutch作者是Doug Cutting),當(dāng)然最后的結(jié)果往往是項(xiàng)目延期完成。
如果你是要做搜索引擎,Nutch1.x是一個非常好的選擇。Nutch1.x和solr或者es配合,就可以構(gòu)成一套非常強(qiáng)大的搜索引擎了。如果非要用Nutch2的話,建議等到Nutch2.3發(fā)布再看。目前的Nutch2是一個非常不穩(wěn)定的版本。
上面說的爬蟲,基本可以分3類:
1.分布式爬蟲:Nutch
2.JAVA單機(jī)爬蟲:Crawler4j、WebMagic、WebCollector
3. 非JAVA單機(jī)爬蟲:scrapy
第一類:分布式爬蟲
爬蟲使用分布式,主要是解決兩個問題:
1)海量URL管理
2)網(wǎng)速
現(xiàn)在比較流行的分布式爬蟲,是Apache的Nutch。但是對于大多數(shù)用戶來說,Nutch是這幾類爬蟲里,最不好的選擇,理由如下:
1)Nutch是為搜索引擎設(shè)計的爬蟲,大多數(shù)用戶是需要一個做精準(zhǔn)數(shù)據(jù)爬?。ň槿。┑呐老x。Nutch運(yùn)行的一套流程里,有三分之二是為了搜索引擎而設(shè)計的。對精抽取沒有太大的意義。也就是說,用Nutch做數(shù)據(jù)抽取,會浪費(fèi)很多的時間在不必要的計算上。而且如果你試圖通過對Nutch進(jìn)行二次開發(fā),來使得它適用于精抽取的業(yè)務(wù),基本上就要破壞Nutch的框架,把Nutch改的面目全非,有修改Nutch的能力,真的不如自己重新寫一個分布式爬蟲框架了。
2)Nutch依賴hadoop運(yùn)行,hadoop本身會消耗很多的時間。如果集群機(jī)器數(shù)量較少,爬取速度反而不如單機(jī)爬蟲快。
3)Nutch雖然有一套插件機(jī)制,而且作為亮點(diǎn)宣傳。可以看到一些開源的Nutch插件,提供精抽取的功能。但是開發(fā)過Nutch插件的人都知道,Nutch的插件系統(tǒng)有多蹩腳。利用反射的機(jī)制來加載和調(diào)用插件,使得程序的編寫和調(diào)試都變得異常困難,更別說在上面開發(fā)一套復(fù)雜的精抽取系統(tǒng)了。而且Nutch并沒有為精抽取提供相應(yīng)的插件掛載點(diǎn)。Nutch的插件有只有五六個掛載點(diǎn),而這五六個掛載點(diǎn)都是為了搜索引擎服務(wù)的,并沒有為精抽取提供掛載點(diǎn)。大多數(shù)Nutch的精抽取插件,都是掛載在“頁面解析”(parser)這個掛載點(diǎn)的,這個掛載點(diǎn)其實(shí)是為了解析鏈接(為后續(xù)爬取提供URL),以及為搜索引擎提供一些易抽取的網(wǎng)頁信息(網(wǎng)頁的meta信息、text文本)。
4)用Nutch進(jìn)行爬蟲的二次開發(fā),爬蟲的編寫和調(diào)試所需的時間,往往是單機(jī)爬蟲所需的十倍時間不止。了解Nutch源碼的學(xué)習(xí)成本很高,何況是要讓一個團(tuán)隊(duì)的人都讀懂Nutch源碼。調(diào)試過程中會出現(xiàn)除程序本身之外的各種問題(hadoop的問題、hbase的問題)。
5)很多人說Nutch2有g(shù)ora,可以持久化數(shù)據(jù)到avro文件、hbase、mysql等。很多人其實(shí)理解錯了,這里說的持久化數(shù)據(jù),是指將URL信息(URL管理所需要的數(shù)據(jù))存放到avro、hbase、mysql。并不是你要抽取的結(jié)構(gòu)化數(shù)據(jù)。其實(shí)對大多數(shù)人來說,URL信息存在哪里無所謂。
6)Nutch2的版本目前并不適合開發(fā)。官方現(xiàn)在穩(wěn)定的Nutch版本是nutch2.2.1,但是這個版本綁定了gora-0.3。如果想用hbase配合nutch(大多數(shù)人用nutch2就是為了用hbase),只能使用0.90版本左右的hbase,相應(yīng)的就要將hadoop版本降到hadoop 0.2左右。而且nutch2的官方教程比較有誤導(dǎo)作用,Nutch2的教程有兩個,分別是Nutch1.x和Nutch2.x,這個Nutch2.x官網(wǎng)上寫的是可以支持到hbase 0.94。但是實(shí)際上,這個Nutch2.x的意思是Nutch2.3之前、Nutch2.2.1之后的一個版本,這個版本在官方的SVN中不斷更新。而且非常不穩(wěn)定(一直在修改)。
所以,如果你不是要做搜索引擎,盡量不要選擇Nutch作為爬蟲。有些團(tuán)隊(duì)就喜歡跟風(fēng),非要選擇Nutch來開發(fā)精抽取的爬蟲,其實(shí)是沖著Nutch的名氣(Nutch作者是Doug Cutting),當(dāng)然最后的結(jié)果往往是項(xiàng)目延期完成。
如果你是要做搜索引擎,Nutch1.x是一個非常好的選擇。Nutch1.x和solr或者es配合,就可以構(gòu)成一套非常強(qiáng)大的搜索引擎了。如果非要用Nutch2的話,建議等到Nutch2.3發(fā)布再看。目前的Nutch2是一個非常不穩(wěn)定的版本。
熱門標(biāo)簽:爬蟲
無相關(guān)信息