當前位置:法律諮詢服務網 - 企業資訊 - java實現網絡爬蟲用哪個爬蟲框架比較好?

java實現網絡爬蟲用哪個爬蟲框架比較好?

有人問,開發網絡爬蟲應該選擇Nutch、Crawler4j、WebMagic、scrapy、WebCollector還是其他?在這裏,根據我的經驗,只是瞎說:

上面提到的爬行動物基本上可以分為三類:

1.分布式爬蟲:Nutch

2.JAVA單爬蟲:Crawler4j,WebMagic,WebCollector。

3.非JAVA獨立爬蟲:scrapy

第壹類:分布式爬行動物

爬蟲使用分布式,主要解決兩個問題:

1)群發網址管理

2)網速

現在比較流行的分布式爬蟲是Apache的Nutch。但對於大多數用戶來說,Nutch是這些爬行動物中最差的選擇,原因如下:

1)Nutch是為搜索引擎設計的爬蟲,大部分用戶需要壹個爬蟲來抓取(提取)準確的數據。Nutch運行壹套流程,其中三分之二是為搜索引擎設計的。對於精細提取沒有太大意義。換句話說,用Nutch提取數據會浪費很多時間在不必要的計算上。而且如果妳試圖通過二次開發讓Nutch適合精細提取業務,基本上就是破壞了Nutch的框架,把Nutch改得面目全非,有能力修改Nutch。自己重新寫壹個分布式爬蟲框架真的更好。

2)Nutch運行在hadoop上,本身就消耗大量時間。如果集群機器數量少,爬行速度不如單個爬蟲快。

3)Nutch有插件機制,作為亮點推廣。可以看到壹些開源的Nutch插件,提供了精細提取的功能。但是開發過Nutch插件的人都知道Nutch插件系統有多蹩腳。使用反射機制加載和調用插件,使得程序的編寫和調試變得異常困難,更不用說在其上開發復雜的精細抽取系統了。而且,Nutch並沒有為精細提取提供相應的插件掛載點。Nutch插件只有五六個掛載點,而這五六個掛載點都是為搜索引擎服務的,並不提供掛載點進行精細提取。Nutch的絕大部分精提取插件都是掛載在“解析器”的掛載點上,實際上是用來解析鏈接(為後續的抓取提供URL),為搜索引擎提供壹些容易提取的網頁信息(網頁的元信息和文本文本)。

4)使用Nutch進行爬蟲的二次開發,爬蟲編譯調試所需時間往往是單機爬蟲所需時間的十倍以上。學習Nutch源代碼是很費錢的,更別說讓壹個團隊的每個人都懂Nutch源代碼了。調試過程中,除了程序本身會出現各種問題(hadoop問題,hbase問題)。

5)很多人說Nutch2有gora,可以把數據持久化到avro文件,hbase,mysql等等。很多人其實誤解了。這裏說的持久化數據是指在avro、hbase、mysql中存儲URL信息(URL管理需要的數據)。這不是您想要提取的結構化數據。其實對於大多數人來說,網址信息存在哪裏並不重要。

Nutch 2的版本目前不適合開發。Nutch的官方穩定版本是nutch2.2.1,但是這個版本綁定了gora-0.3。如果要配合nutch使用hbase(大部分人使用nutch2只是為了使用hbase),只能使用0.90版本左右的hbase,hadoop版本要相應降低到0.2左右。而且nutch2的官方教程有誤導性。Nutch2有兩個教程,分別是Nutch1.x和Nutch2.x,是為了支持hbase 0.94而編寫的。但實際上這個Nutch2.x指的是Nutch2.3之前和Nutch2.2.1之後的版本,在SVN官方不斷更新。而且很不穩定(壹直在修改)。

所以,如果妳不打算做搜索引擎,盡量不要選擇Nutch做爬蟲。有些團隊喜歡跟風,不得不選擇Nutch開發精提爬蟲。其實是針對Nutch的名聲(Nutch是道格·卡丁寫的),當然最後的結果往往是項目延期。

如果想做搜索引擎,Nutch1.x是壹個非常好的選擇。Nutch1.x和solr或者es可以組成壹個非常強大的搜索引擎。如果非要用Nutch2,建議等到Nutch2.3發布。Nutch2目前是壹個非常不穩定的版本。

  • 上一篇:企業的財務比率有哪些?
  • 下一篇:如何更好地實施雙重預防機制
  • copyright 2024法律諮詢服務網