自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

開發(fā) 后端
我們從今天開始學(xué)習(xí)開源爬蟲框架Scrapy,如果你看過《手把手》系列的前兩篇,那么今天的內(nèi)容就非常容易理解了。Scrapy的靈活性幾乎能夠讓我們完成任何苛刻的抓取需求,它的“難用”也讓我們不知不覺的研究爬蟲技術(shù)。

[[229275]]

 

本系列:

Project Language Star Watch Fork
Nutch Java 1111 195 808
webmagic Java 4216 618 2306
WebCollector Java 1222 255 958
heritrix3 Java 773 141 428
crawler4j Java 1831 242 1136
Pyspider Python 8581 687 2273
Scrapy Python 19642 1405 5261

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

[[229276]]

 

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

  • 極其靈活的定制化爬取。
  • 社區(qū)人數(shù)多、文檔完善。
  • URL去重采用布隆過濾器方案。
  • 可以處理不完整的HTML,Scrapy已經(jīng)提供了selectors(一個在lxml的基礎(chǔ)上提供了更高級的接口),可以高效地處理不完整的HTML代碼。

缺點(diǎn):

  • 不支持分布式部署。
  • 原生不支持抓取JavaScript的頁面。
  • 全命令行操作,對用戶不友好,需要一定學(xué)習(xí)周期。

結(jié)論

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

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

最終,理性的從個人的需求角度對比,還是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),多存儲后端(FTP、S3、本地文件系統(tǒng))的內(nèi)置支持。
  • 提供了media pipeline,可以 自動下載 爬取到的數(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)或者錯誤的編碼聲明, 提供了自動檢測以及健壯的編碼支持。
  • 支持根據(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 為您在爬取過程中捕捉錯誤提供了方便。
  • 支持 Sitemaps 爬取。
  • 具有緩存的DNS解析器。

下一步 

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

原文鏈接:http://www.cnblogs.com/tuohai666/p/8861422.html

責(zé)任編輯:龐桂玉 來源: Python開發(fā)者
相關(guān)推薦

2018-05-14 15:27:06

Python網(wǎng)絡(luò)爬蟲爬蟲架構(gòu)

2018-05-22 15:30:30

Python網(wǎng)絡(luò)爬蟲分布式爬蟲

2018-05-16 15:46:06

Python網(wǎng)絡(luò)爬蟲PhantomJS

2018-05-16 13:50:30

Python網(wǎng)絡(luò)爬蟲Scrapy

2018-05-22 16:28:46

Python網(wǎng)絡(luò)爬蟲URL去重

2018-05-14 14:02:41

Python爬蟲網(wǎng)易云音樂

2020-07-10 08:24:18

Python開發(fā)工具

2021-01-30 10:37:18

ScrapyGerapy網(wǎng)絡(luò)爬蟲

2021-09-01 14:49:48

curl2pypython工具

2021-04-01 09:02:38

Python小說下載網(wǎng)絡(luò)爬蟲

2021-11-09 09:01:36

Python網(wǎng)絡(luò)爬蟲Python基礎(chǔ)

2022-03-30 09:11:00

Python網(wǎng)絡(luò)爬蟲

2023-03-27 08:28:57

spring代碼,starter

2020-11-10 09:11:02

采集數(shù)據(jù)

2024-01-26 08:16:48

Exporter開源cprobe

2021-05-27 11:10:42

Python開源包代碼

2021-07-14 09:00:00

JavaFX開發(fā)應(yīng)用

2011-01-10 14:41:26

2011-05-03 15:59:00

黑盒打印機(jī)

2017-09-05 13:01:11

CocoaPods開源庫GitHub
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號