零基礎入門Python爬蟲:三種分佈式爬蟲系統的架構方式!

分佈式爬蟲系統廣泛應用於大型爬蟲項目中,力求以最高的效率完成任務,這也是分佈式爬蟲系統的意義所在。

分佈式系統的核心在於通信,介紹三種分佈式爬蟲系統的架構思路,都是圍繞通信開始,也就是說有多少分佈式系統的通信方式就有多少分佈式爬蟲系統的架構思路。

Redis
利用redis做分佈式系統,最經典的就是scrapy-Redis,這是比較成熟的框架。同時我們也可以利用Redis的隊列功能或者訂閱發佈功能來打造自己的分佈式系統。
零基礎入門Python爬蟲:三種分佈式爬蟲系統的架構方式!
Redis作爲通信載體的優點是讀寫迅速,對爬蟲的速度影響可忽略不 計,使用比較普遍。

主程序示例:

[圖片上傳失敗...(image-cf2c25-1549881943619)]

2.RabbitMQ

RabbitMQ是比較靠譜的消息中間件,得益於它的確認機制,當一條消息消費後如果設置確定模式,那麼確認後纔會繼續消費,如果不確定認,那麼這個任務將分配給其他消費者。
零基礎入門Python爬蟲:三種分佈式爬蟲系統的架構方式!
基於這種確認機制,可以在高可靠性和高數據要求情景中,避免數據抓取的遺漏和丟失。

其設計思路應該是基於mq設計兩個接口,一個用於URL的存放,一個用戶URL的獲取,同時基於Redis的URL去重,通過類似scrapy-redis 的調度使爬蟲運行。

主程序示例:
零基礎入門Python爬蟲:三種分佈式爬蟲系統的架構方式!
零基礎入門Python爬蟲:三種分佈式爬蟲系統的架構方式!
3.Celery

celery典型的分佈式任務隊列,常用於異步操作中,如tornado、Django的異步任務中,用celery設計分佈式爬蟲系統,往往結合網絡框架,打造一個爬蟲任務接口,提供給其他人使用。
零基礎入門Python爬蟲:三種分佈式爬蟲系統的架構方式!
同時celery在定時任務方面有着優勢,只需要在配置文件中設置一下,就可以定期執行任務,不必自己寫定時操作。

celery使用消息中間件,而這個消息中間件,可以使用Redis也可以使用RabbitMQ,但他的調度不必擔心,已經封裝。

主程序示例:
零基礎入門Python爬蟲:三種分佈式爬蟲系統的架構方式!
注意:上面的程序片段只是片段,用於示例。綜上我們應該清楚在不同的任務場景中使用甚至如何設計自己的爬蟲系統,分佈式爬蟲系統的核心是不同主機的通信。

最後,如果你跟我一樣都喜歡python,想成爲一名優秀的程序員,也在學習python的道路上奔跑,歡迎你加入python學習羣:839383765 羣內每天都會分享最新業內資料,分享python免費課程,共同交流學習,讓學習變(編)成(程)一種習慣!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章