真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

手把手教你寫網(wǎng)絡(luò)爬蟲(3)開源爬蟲框架對比-創(chuàng)新互聯(lián)

介紹

大家好!我們從今天開始學(xué)習(xí)開源爬蟲框架Scrapy,如果你看過《手把手》系列的前兩篇,那么今天的內(nèi)容就非常容易理解了。細(xì)心的讀者也許會(huì)有疑問,為什么不學(xué)出身名門的Apache頂級(jí)項(xiàng)目Nutch,或者人氣飆升的國內(nèi)大神開發(fā)的Pyspider等框架呢?原因很簡單,我們來看一下主流爬蟲框架在GitHub上的活躍度:

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信平臺(tái)小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了墨脫免費(fèi)建站歡迎大家使用!

手把手教你寫網(wǎng)絡(luò)爬蟲(3)開源爬蟲框架對比

看到了嗎?星星數(shù)排名第一的Scrapy比其他所有的加起來都要多,我仿佛聽到他這樣說:

手把手教你寫網(wǎng)絡(luò)爬蟲(3)開源爬蟲框架對比

好了,以上純屬玩笑,切莫認(rèn)真,不然要引發(fā)口水戰(zhàn)了!這些框架都很優(yōu)秀,都有很多用戶,活躍度相對低的并不說明技術(shù)低,活躍度相對高的也許只是多滿足了一些用戶需求。接下來我們還是要理性的對主流爬蟲框架做一個(gè)對比分析。

開源框架大PK

各路英雄已經(jīng)到齊了, PK現(xiàn)在開始!

手把手教你寫網(wǎng)絡(luò)爬蟲(3)開源爬蟲框架對比

Nutch

介紹:

Nutch是一個(gè)開源的Java實(shí)現(xiàn)的搜索引擎。它提供了我們運(yùn)行自己的搜索引擎所需的全部工具,包括全文搜索和網(wǎng)絡(luò)爬蟲。

盡管搜索是上網(wǎng)的基本要求,但是現(xiàn)有的搜索引擎的數(shù)目卻在下降。并且這很有可能進(jìn)一步演變成為一個(gè)公司壟斷了幾乎所有的網(wǎng)頁搜索為其謀取商業(yè)利益。這顯然不利于廣大Internet用戶。

Nutch為我們提供了這樣一個(gè)不同的選擇。相對于那些商用的搜索引擎,Nutch作為開放源代碼的搜索引擎將會(huì)更加透明,從而更值得大家信賴?,F(xiàn)在所有主要的搜索引擎都采用私有的排序算法, 而不會(huì)解釋為什么一個(gè)網(wǎng)頁會(huì)排在一個(gè)特定的位置。除此之外, 有的搜索引擎依照網(wǎng)站所付的費(fèi)用, 而不是根據(jù)它們本身的價(jià)值進(jìn)行排序。與它們不同,Nutch沒有什么需要隱瞞,也沒有動(dòng)機(jī)去扭曲搜索的結(jié)果。Nutch將盡自己大的努力為用戶提供最好的搜索結(jié)果。

手把手教你寫網(wǎng)絡(luò)爬蟲(3)開源爬蟲框架對比

優(yōu)點(diǎn):

Nutch支持分布式抓取,并有Hadoop支持,可以進(jìn)行多機(jī)分布抓取,存儲(chǔ)和索引。另外很吸引人的一點(diǎn)在于,它提供了一種插件框架,使得其對各種網(wǎng)頁內(nèi)容的解析、各種數(shù)據(jù)的采集、查詢、集群、過濾等功能能夠方便的進(jìn)行擴(kuò)展。正是由于有此框架,使得 Nutch 的插件開發(fā)非常容易,第三方的插件也層出不窮,極大的增強(qiáng)了 Nutch 的功能和聲譽(yù)。

缺點(diǎn):

對于大多數(shù)用戶來說,一般是想做一個(gè)精確數(shù)據(jù)爬取的爬蟲,就像第一篇里爬歌單那個(gè)“主題爬蟲”。而第二篇介紹的“通用爬蟲”適合做搜索引擎,這種需求就比較少。如果以此為標(biāo)準(zhǔn),那么為搜索引擎而生的Nutch就有著天生缺點(diǎn)。Nutch的架構(gòu)里大部分為搜索引擎而設(shè)計(jì)的,對精確爬取沒有特別的考慮。也就是說,用Nutch做主題爬蟲,會(huì)浪費(fèi)很多的時(shí)間在不必要的計(jì)算上。而且如果你試圖通過對Nutch進(jìn)行二次開發(fā)來擴(kuò)展其定制能力,基本上就要破壞Nutch的框架,反而不如自己寫了。

Pyspider

介紹:

Pyspider是一個(gè)國人編寫的強(qiáng)大的網(wǎng)絡(luò)爬蟲系統(tǒng)并帶有強(qiáng)大的WebUI。采用Python語言編寫,分布式架構(gòu),支持多種數(shù)據(jù)庫后端,強(qiáng)大的WebUI支持腳本編輯器,任務(wù)監(jiān)視器,項(xiàng)目管理器以及結(jié)果查看器。

手把手教你寫網(wǎng)絡(luò)爬蟲(3)開源爬蟲框架對比

Pyspider的主要功能包括,抓取、更新調(diào)度多站點(diǎn)的特定的頁面;需要對頁面進(jìn)行結(jié)構(gòu)化信息提??;靈活可擴(kuò)展,穩(wěn)定可監(jiān)控。滿足了絕大多數(shù)Python爬蟲的需求 —— 定向抓取,結(jié)構(gòu)化化解析。但是面對結(jié)構(gòu)迥異的各種網(wǎng)站,單一的抓取模式并不一定能滿足,靈活的抓取控制是必須的。為了達(dá)到這個(gè)目的,單純的配置文件往往不夠靈活,于是,通過腳本去控制抓取成為了最后的選擇。而去重調(diào)度,隊(duì)列,抓取,異常處理,監(jiān)控等功能作為框架,提供給抓取腳本,并保證靈活性。最后加上web的編輯調(diào)試環(huán)境,以及web任務(wù)監(jiān)控,即成為了最終的框架。

優(yōu)點(diǎn):

支持分布式部署。

完全可視化,對用戶非常友好:WEB 界面編寫調(diào)試腳本,起停腳本,監(jiān)控執(zhí)行狀態(tài),查看活動(dòng)歷史,獲取結(jié)果產(chǎn)出。

簡單,五分鐘就能上手。腳本規(guī)則簡單,開發(fā)效率高。

支持抓取JavaScript的頁面。

總之,Pyspider非常強(qiáng)大,強(qiáng)大到更像一個(gè)產(chǎn)品而不是一個(gè)框架。

缺點(diǎn):

URL去重使用數(shù)據(jù)庫而不是布隆過濾器,億級(jí)存儲(chǔ)的db io將導(dǎo)致效率急劇降低。

使用上的人性化犧牲了靈活度,定制化能力降低。

Scrapy

介紹:

Scrapy是一個(gè)為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架。 可以應(yīng)用在包括數(shù)據(jù)挖掘,信息處理或存儲(chǔ)歷史數(shù)據(jù)等一系列的程序中。Scrapy 使用 Twisted這個(gè)異步網(wǎng)絡(luò)庫來處理網(wǎng)絡(luò)通訊,架構(gòu)清晰,并且包含了各種中間件接口,可以靈活的完成各種需求。Scratch,是抓取的意思,這個(gè)Python的爬蟲框架叫Scrapy,大概也是這個(gè)意思吧。

手把手教你寫網(wǎng)絡(luò)爬蟲(3)開源爬蟲框架對比

優(yōu)點(diǎn):

極其靈活的定制化爬取。

社區(qū)人數(shù)多、文檔完善。

URL去重采用布隆過濾器方案。

可以處理不完整的HTML,Scrapy已經(jīng)提供了selectors(一個(gè)在lxml的基礎(chǔ)上提供了更高級(jí)的接口),可以高效地處理不完整的HTML代碼。

缺點(diǎn):

不支持分布式部署。

原生不支持抓取JavaScript的頁面。

全命令行操作,對用戶不友好,需要一定學(xué)習(xí)周期。

結(jié)論

篇幅有限,就先選擇這三個(gè)最有代表性的框架進(jìn)行PK。他們都有遠(yuǎn)超別人的優(yōu)點(diǎn),比如:Nutch天生的搜索引擎解決方案、Pyspider產(chǎn)品級(jí)的WebUI、Scrapy最靈活的定制化爬取。也都各自致命的缺點(diǎn),比如Scrapy不支持分布式部署,Pyspider不夠靈活,Nutch和搜索綁定。究竟該怎么選擇呢?

我們的目標(biāo)是做純粹的爬蟲,不是搜索引擎,所以先把Nutch排除掉,剩下人性化的Pyspider和高可定制的Scrapy。Scrapy的靈活性幾乎能夠讓我們完成任何苛刻的抓取需求,它的“難用”也讓我們不知不覺的研究爬蟲技術(shù)。現(xiàn)在還不是享受Pyspider的時(shí)候,目前的當(dāng)務(wù)之急是打好基礎(chǔ),應(yīng)該學(xué)習(xí)最接近爬蟲本質(zhì)的框架,了解它的原理,所以把Pyspider也排除掉。

最終,理性的從個(gè)人的需求角度對比,還是Scrapy勝出!其實(shí)Scrapy還有更多優(yōu)點(diǎn):

HTML, XML源數(shù)據(jù)選擇及提取的原生支持。

提供了一系列在spider之間共享的可復(fù)用的過濾器(即 Item Loaders),對智能處理爬取數(shù)據(jù)提供了內(nèi)置支持。

通過 feed導(dǎo)出 提供了多格式(JSON、CSV、XML),多存儲(chǔ)后端(FTP、S3、本地文件系統(tǒng))的內(nèi)置支持。

提供了media pipeline,可以 自動(dòng)下載 爬取到的數(shù)據(jù)中的圖片(或者其他資源)。

高擴(kuò)展性。您可以通過使用 signals ,設(shè)計(jì)好的API(中間件, extensions, pipelines)來定制實(shí)現(xiàn)您的功能。

內(nèi)置的中間件及擴(kuò)展為下列功能提供了支持:

cookies and session 處理

HTTP 壓縮

HTTP 認(rèn)證

HTTP 緩存

user-agent模擬

robots.txt

爬取深度限制

針對非英語語系中不標(biāo)準(zhǔn)或者錯(cuò)誤的編碼聲明, 提供了自動(dòng)檢測以及健壯的編碼支持。

支持根據(jù)模板生成爬蟲。在加速爬蟲創(chuàng)建的同時(shí),保持在大型項(xiàng)目中的代碼更為一致。

針對多爬蟲下性能評估、失敗檢測,提供了可擴(kuò)展的 狀態(tài)收集工具 。

提供 交互式shell終端 , 為您測試XPath表達(dá)式,編寫和調(diào)試爬蟲提供了極大的方便。

提供 System service, 簡化在生產(chǎn)環(huán)境的部署及運(yùn)行。

內(nèi)置 Telnet終端 ,通過在Scrapy進(jìn)程中鉤入Python終端,使您可以查看并且調(diào)試爬蟲。

Logging 為您在爬取過程中捕捉錯(cuò)誤提供了方便。

支持 Sitemaps 爬取。

具有緩存的DNS解析器。


下一步

吹了半天的Scrapy,時(shí)間也到了,如果大家能夠喜歡上它,學(xué)習(xí)的效率一定會(huì)成倍提升!下次我會(huì)為大家?guī)頋M滿的干貨,并完成更具挑戰(zhàn)性的爬蟲任務(wù),我們下期再見!

最后,初學(xué)者進(jìn)階的福音

想學(xué)習(xí),基礎(chǔ)不夠?沒關(guān)系,我們提供免費(fèi)提供VIP基礎(chǔ)學(xué)習(xí)課程,讓你快速入門,掌握Python!

有基礎(chǔ)的小伙伴想學(xué)習(xí)項(xiàng)目實(shí)戰(zhàn)?沒問題,每晚八點(diǎn)都有博士大牛帶你學(xué)習(xí)操作項(xiàng)目!

只要你有一顆想學(xué)習(xí)的心,我們隨時(shí)歡迎~

手把手教你寫網(wǎng)絡(luò)爬蟲(3)開源爬蟲框架對比

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


網(wǎng)站標(biāo)題:手把手教你寫網(wǎng)絡(luò)爬蟲(3)開源爬蟲框架對比-創(chuàng)新互聯(lián)
本文來源:http://weahome.cn/article/depdgs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部