寫在前面
最近該系列的爬蟲更新比較慢了,原因是實在寫不動了,70多篇博客,每一篇都是一個案例,在寫好多都不是篇博客可以容納的了,而且爬蟲的技術在70多篇中都有所涉及了,但是flag既然歷下了,那麼就必須要把它完成,接下來進入一些稍微稍微麻煩一點的內容,第一個咱就寫分佈式爬蟲,這個其實核心就是提高爬取效率的,屬於套路,而且是常見的討論,走起。
爲什麼要用分佈式
好問題,其實大多數爬蟲在編寫的時候如果遇到效率問題,用多進程,協程就可以滿足需求了,但是當一個爬蟲類的項目上升到非常大的級別或者達到商用的目的,你需要同時抓取成千上萬個網站,處理上億的請求(有點誇張了),單個的爬蟲非常難實現這樣的需求,就需要大量的服務器進行同時分佈抓取,所以你看到大多數分佈式爬蟲課程到最後都是在模擬一個搜索引擎,因爲搜索引擎就是一個超級爬蟲。
接下來的幾篇博客,可能重點都會落在scrapy-redis
這個框架或者叫做基於redis的一個組件上面,因爲通過他,我們可以快速、簡單的實現分佈式爬蟲程序
總結一句話,啥叫分佈式爬蟲,可以給一個不精準,但是好理解的定義
把爬蟲部署在多臺電腦主機上,並且互相之間還有通訊的一種爬蟲技術
scrapy-redis
對於分佈式爬蟲,scrapy-redis 目前是應用最多的,並且是互聯網相關教程說明最多的,原因也不用太深究,綜合各種因素來看該框架是最簡單的構建分佈式爬蟲的方式,而且資料全,不選他選誰?
後續我盡力把常見的分佈式爬蟲框架都進行依次的說明,例如scrapyd
、celery
這些,瞭解的越多,對待一個問題的解決方案也會變的越多。
回顧scrapy的架構
scrapy默認是單機爬蟲,有過了解的朋友(當然,你如果持續看到我今天的博客,應該在之前已經對scrapy有過認識了,當然不能說看過幾篇博客就能