當前位置:
首頁 > 知識 > 如何構建一個分布式爬蟲:基礎篇

如何構建一個分布式爬蟲:基礎篇

本文已獲作者授權。

文 | resolvewang

繼上篇我們談論了 Celery 的基本知識後,本篇繼續講解如何一步步使用 Celery 構建分布式爬蟲。這次我們抓取的對象定為 celery 官方文檔。

首先,我們新建目錄 ,然後再在其中新建文件 ,裡面內容如下

上述代碼主要是做 Celery 實例的初始化工作, 是在初始化 celery app 的時候需要引入的內容,主要就是註冊為網路調用的函數所在的文件。然後我們再編寫任務函數,新建文件 ,內容如下

它的作用很簡單,就是抓取指定的 url,並且把標籤為 的元素提取出來

最後,我們新建文件 ,內容如下

這段代碼的作用主要就是給 worker 發送任務,任務是 ,參數是 (元祖的形式)

現在,讓我們在節點 A(hostname 為resolvewang的主機) 上啟動 worker

celery -A workers worker -c 2 -l info

這裡 指定了線程數為 2, 表示日誌等級是 。我們把代碼拷貝到節點 B(節點名為wpm的主機),同樣以相同命令啟動 worker,便可以看到以下輸出

兩個節點

可以看到左邊節點(A) 先是 ,表示只有一個節點;後來再節點 B 啟動後,它便和 B 同步了

sync with celery@wpm

這個時候,我們運行給這兩個 worker 節點發送抓取任務

python task_dispatcher.py

可以看到如下輸出

分布式抓取示意圖

可以看到兩個節點都在執行抓取任務,並且它們的任務不會重複。我們再在 redis 里看看結果

backend 示意圖

可以看到一共有 11 條結果,說明 中返回的數據都在 db2(backend) 中了,並且以 json 的形式存儲了起來,除了返回的結果,還有執行是否成功等信息。

到此,我們就實現了一個很基礎的分布式網路爬蟲,但是它還不具有很好的擴展性,而且貌似太簡單了...下一篇我將以微博數據採集為例來演示如何構建一個穩健的分布式網路爬蟲。

題圖:pexels,CC0 授權。

點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 編程派 的精彩文章:

裝扮你的 Jupyter Notebook
微信紅包海量性能背後的秘密
Instagram在PyCon 2017 的演講摘要
今晚8點半直播,一個小時入門負載均衡
Flask 源碼解析:session

TAG:編程派 |

您可能感興趣

我是如何零基礎開始能寫爬蟲的?
爬蟲類,不一樣的個性
網路爬蟲——抓取時的幾個小細節
每秒幾十萬的大規模網路爬蟲是如何煉成的?
【爬行天下】智能一體式爬蟲箱
分散式爬蟲原理之Scrapy分散式實現
python爬蟲項目基礎到進階的全套實戰項目整理,掌握以後秒變大神!
使用 Scrapy 構建一個網路爬蟲
node爬蟲:爬蟲基礎概覽
爬蟲進階:反反爬蟲技巧
走進成熟的爬蟲框架
奧特曼:四大爬蟲怪獸對比,薩伊哥變綠龜,哥隆加撞臉三角龍
運用 Redis 構建分散式爬蟲,抓妹子圖
聽說你好不容易寫了個爬蟲,結果沒抓幾個就被封了?
三個Python爬蟲版本,帶你以各種方式爬取校花網,輕鬆入門爬蟲
周冬雨登封面演繹大膽造型,學爬蟲類又扎馬步花樣太多
爬蟲培訓更新:第一課視頻改進
這個地方一個爬蟲竟然能賣到十萬美元,一個蟲子竟然比你住的房子還要貴
零基礎小白也可以快速入門學會的Python爬蟲項目,60分鐘搞定
將驗證碼識別功能集成到現有的爬蟲框架