
800819103
在線客服,實時響應
qq群
在線客服,實時響應
客服電話
13318873961
網絡爬蟲使用各種框架可以很好并快速的抓取到各種數據,雖說不同的爬蟲框架,效果不同,優缺點也不同,但是在Pyspider、Nutch以及Scrapy這幾個爬蟲框架中,為什么大家更喜歡使用Scrapy爬蟲框架?今天就跟小編去看看開源爬蟲框架對比,這幾個爬蟲框架有什么優缺點呢。
1.Pyspider是一個國人編寫的強大的網絡爬蟲系統并帶有強大的WebUI。
采用Python語言編寫,分布式架構,支持多種數據庫后端,強大的WebUI支持腳本編輯器,任務監視器,項目管理器以及結果查看器。
Pyspider的主要功能包括,抓取、更新調度多站點的特定的頁面;需要對頁面進行結構化信息提??;靈活可擴展,穩定可監控。滿足了絕大多數Python爬蟲的需求 -- 定向抓取,結構化化解析。但是面對結構迥異的各種網站,單一的抓取模式并不一定能滿足,靈活的抓取控制是必須的。為了達到這個目的,單純的配置文件往往不夠靈活,于是,通過腳本去控制抓取成為了最后的選擇。而去重調度,隊列,抓取,異常處理,監控等功能作為框架,提供給抓取腳本,并保證靈活性。最后加上web的編輯調試環境,以及web任務監控,即成為了最終的框架。
優點:
支持分布式部署;完全可視化,對用戶非常友好:WEB 界面編寫調試腳本,起停腳本,監控執行狀態,查看活動歷史,獲取結果產出;簡單,五分鐘就能上手。腳本規則簡單,開發效率高;支持抓取JavaScript的頁面??傊?,Pyspider非常強大,強大到更像一個產品而不是一個框架。
缺點:
URL去重使用數據庫而不是布隆過濾器,億級存儲的db io將導致效率急劇降低。使用上的人性化犧牲了靈活度,定制化能力降低。
2.Nutch是一個開源的Java實現的搜索引擎。
它提供了我們運行自己的搜索引擎所需的全部工具,包括全文搜索和網絡爬蟲。
盡管搜索是上網的基本要求,但是現有的搜索引擎的數目卻在下降。并且這很有可能進一步演變成為一個公司壟斷了幾乎所有的網頁搜索為其謀取商業利益。這顯然不利于廣大Internet用戶。
Nutch為我們提供了這樣一個不同的選擇。相對于那些商用的搜索引擎,Nutch作為開放源代碼的搜索引擎將會更加透明,從而更值得大家信賴?,F在所有主要的搜索引擎都采用私有的排序算法, 而不會解釋為什么一個網頁會排在一個特定的位置。除此之外, 有的搜索引擎依照網站所付的費用, 而不是根據它們本身的價值進行排序。與它們不同,Nutch沒有什么需要隱瞞,也沒有動機去扭曲搜索的結果。Nutch將盡自己最大的努力為用戶提供最好的搜索結果。
優點:
Nutch支持分布式抓取,并有Hadoop支持,可以進行多機分布抓取,存儲和索引。另外很吸引人的一點在于,它提供了一種插件框架,使得其對各種網頁內容的解析、各種數據的采集、查詢、集群、過濾等功能能夠方便的進行擴展。正是由于有此框架,使得 Nutch 的插件開發非常容易,第三方的插件也層出不窮,極大的增強了 Nutch 的功能和聲譽。
缺點:
對于大多數用戶來說,一般是想做一個精確數據爬取的爬蟲,就像第一篇里爬歌單那個“主題爬蟲”。而第二篇介紹的“通用爬蟲”適合做搜索引擎,這種需求就比較少。如果以此為標準,那么為搜索引擎而生的Nutch就有著天生缺點。Nutch的架構里大部分為搜索引擎而設計的,對精確爬取沒有特別的考慮。也就是說,用Nutch做主題爬蟲,會浪費很多的時間在不必要的計算上。而且如果你試圖通過對Nutch進行二次開發來擴展其定制能力,基本上就要破壞Nutch的框架,反而不如自己寫了。
3.Scrapy是一個為了爬取網站數據,提取結構性數據而編寫的應用框架。
可以應用在包括數據挖掘,信息處理或存儲歷史數據等一系列的程序中。Scrapy 使用 Twisted這個異步網絡庫來處理網絡通訊,架構清晰,并且包含了各種中間件接口,可以靈活的完成各種需求。Scratch,是抓取的意思,這個Python的爬蟲框架叫Scrapy,大概也是這個意思吧。
優點:
極其靈活的定制化爬??;社區人數多、文檔完善;URL去重采用布隆過濾器方案;可以處理不完整的HTML,Scrapy已經提供了selectors(一個在lxml的基礎上提供了更高級的接口),可以高效地處理不完整的HTML代碼。
缺點:
不支持分布式部署;原生不支持抓取JavaScript的頁面;全命令行操作,對用戶不友好,需要一定學習周期。
結論
篇幅有限,就先選擇這三個最有代表性的框架進行PK。他們都有遠超別人的優點,比如:Nutch天生的搜索引擎解決方案、Pyspider產品級的WebUI、Scrapy最靈活的定制化爬取。也都各自致命的缺點,比如Scrapy不支持分布式部署,Pyspider不夠靈活,Nutch和搜索綁定。究竟該怎么選擇呢?
我們的目標是做純粹的爬蟲,不是搜索引擎,所以先把Nutch排除掉,剩下人性化的Pyspider和高可定制的Scrapy。Scrapy的靈活性幾乎能夠讓我們完成任何苛刻的抓取需求,它的“難用”也讓我們不知不覺的研究爬蟲技術?,F在還不是享受Pyspider的時候,目前的當務之急是打好基礎,應該學習最接近爬蟲本質的框架,了解它的原理,所以把Pyspider也排除掉。
最終,理性的從個人的需求角度對比,還是Scrapy勝出!