我們大多時候玩的爬蟲
都是執行在自己的機子,就是單機模式
之前我們為了提高爬蟲的效率,說過多程序相關的,今天來講講什麼是分布式爬蟲。
一、 什麼是分布式?
你開發乙個**想要給別人訪問就需要把**部署到伺服器
當**使用者增多的時候乙個伺服器就不滿足需求了於是就會把**部署到多個伺服器上
這種情況通常叫集群,就是把整個**的所有功能,都同時部署到不同的伺服器上一般會使用 ngnix 作負載均衡。不過有些功能併發量並不是很高比如一些後台的管理,所以就有人想要不如把這個**的功能都拆分出來,讓每乙個模組只負責具體的功能
比如登入模組,內容管理模組等
然後在部署的時候把一些併發量大的模組部署到多個伺服器就行了,耦合度大大的降低了,併發量小的模組也不會浪費那麼多資源了
當然模組與模組之間會產生聯絡,也就是如何排程好它們,一般會用到訊息佇列
這就是所謂的分布式了。
對於一些資料不大的資料我們的爬蟲一般是直接在電腦執行了,而分布式爬蟲說白了,就是把爬蟲的關鍵功能以分布式形式部署到多台機器上然後一起爬
二、模組聯絡
那麼如何將爬蟲之間聯絡起來呢?
我們可以使用 redis 的訊息佇列進行排程(schedule)之前我們也有說過 redis,它是乙個讀寫速度快的快取資料庫,還提供了類似 python 的list、set 等資料結構
在scrapy 框架裡面就有乙個scrapy-redis專門用它來排程爬蟲的,它可以將請求的 url 放到redis 的訊息佇列裡面,然後用 spider 模組將資料給結構化抽出來放到 redis 資料庫裡面去。
當然,分布式爬蟲有時候還會結合資料庫集群爬取資料。
爬蟲 分布式爬蟲
爬蟲的本質 很多搞爬蟲的總愛吹噓分布式爬蟲,彷彿只有分布式才有逼格,不是分布式簡直不配叫爬蟲,這是一種很膚淺的思想。分布式只是提高爬蟲功能和效率的乙個環節而已,它從來不是爬蟲的本質東西。爬蟲的本質是網路請求和資料處理,如何穩定地訪問網頁拿到資料,如何精準地提取出高質量的資料才是核心問題。分布式爬蟲只...
分布式爬蟲
乙個基於scrapy redis的分布式爬蟲模板,在scrapy redis自帶的example的基礎上進行修改,新增在實際爬取過程中大部分爬蟲可能用到的功能,使的構建分布式爬蟲更加的簡單。scrapy redis windows ubuntu sudo apt get install redis ...
分布式爬蟲
修改普通爬蟲專案為分布式爬蟲 1.主爬蟲檔案myspider.py 做如下修改,其他不做修改 import scrapy from items import myitem 匯入資料模型 from scrapy redis.spiders import redisspider 匯入scrapy red...