1. 程式人生 > 程式設計 >python分散式爬蟲中訊息佇列知識點詳解

python分散式爬蟲中訊息佇列知識點詳解

當排隊等待人數過多的時候,我們需要設定一個等待區防止秩序混亂,同時再有新來的想要排隊也可以呆在這個地方。那麼在python分散式爬蟲中,訊息佇列就相當於這樣的一個區域,爬蟲要進入這個區域找尋自己想要的資源,當然這個是一定的次序的,不然資料獲取就會出現重複。就下來我們就python分散式爬蟲中的訊息佇列進行詳細解釋,小夥伴們可以進一步瞭解一下。

實現分散式爬取的關鍵是訊息佇列,這個問題以消費端為視角更容易理解。你的爬蟲程式部署到很多臺機器上,那麼他們怎麼知道自己要爬什麼呢?總要有一個地方儲存了他們需要爬取的url吧,這樣他們才能工作。

假設有1萬個url需要爬取,而你有100個爬蟲程式部署在10臺機器上,每臺10個爬蟲程式在執行,一個url被分給爬蟲程式後,其他爬蟲不能再獲得這個url,不然,就重複爬取了,理解吧,分散式爬蟲的關鍵是怎麼把任務分給這些爬蟲。

有些促銷活動的現場會進行抽獎活動,工作人員捧著一個透明的箱子,參與活動的人從箱子的小口處把手伸進去隨機拿出一張摺疊的紙條,這種模式與訊息佇列十分相似。訊息佇列就好比這個抽獎的箱子,消費端的爬蟲程式就好比參與活動的顧客,爬蟲從訊息佇列裡拿出一個url任務,然後進行爬取,不同於抽獎活動時一個人只能拿一次,分散式爬蟲允許爬蟲在結束一個爬蟲任務後繼續從訊息佇列裡獲取任務。

使用redis的佇列做訊息佇列

如果你只是簡單的寫一個分散式爬蟲,那麼使用redis的佇列就可以了,它完全可以作為訊息佇列來使用,下面的程式碼是生產端的程式碼示例

import redis
r = redis.Redis(host='127.0.0.1',port=6379,password='yourpassword',db=1)
# 生產10個url任務
for i in range(10):
  r.lpush('url_queue',i)

相信看完以上的程式碼示例後,小夥伴們已經學會用redis創造一個訊息佇列,用來方便爬蟲的獲取資料。本篇是以生產段的角度寫的程式碼

到此這篇關於python分散式爬蟲中訊息佇列知識點詳解的文章就介紹到這了,更多相關python分散式爬蟲中的訊息佇列是什麼內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!