從零搭建Redis-Scrapy分布式爬蟲

Scrapy-Redis分布式策略:
假設(shè)有四臺(tái)電腦:Windows 10、Mac OS X、Ubuntu 16.04、CentOS 7.2,任意一臺(tái)電腦都可以作為 Master端 或 Slaver端,比如:
Master端(核心服務(wù)器) :使用 Windows 10,搭建一個(gè)Redis數(shù)據(jù)庫,不負(fù)責(zé)爬取,只負(fù)責(zé)url指紋判重、Request的分配,以及數(shù)據(jù)的存儲(chǔ)Slaver端(爬蟲程序執(zhí)行端) :使用 Mac OS X 、Ubuntu 16.04、CentOS 7.2,負(fù)責(zé)執(zhí)行爬蟲程序,運(yùn)行過程中提交新的Request給Master

首先Slaver端從Master端拿任務(wù)(Request、url)進(jìn)行數(shù)據(jù)抓取,Slaver抓取數(shù)據(jù)的同時(shí),產(chǎn)生新任務(wù)的Request便提交給 Master 處理;
Master端只有一個(gè)Redis數(shù)據(jù)庫,負(fù)責(zé)將未處理的Request去重和任務(wù)分配,將處理后的Request加入待爬隊(duì)列,并且存儲(chǔ)爬取的數(shù)據(jù)。
Scrapy-Redis默認(rèn)使用的就是這種策略,我們實(shí)現(xiàn)起來很簡單,因?yàn)槿蝿?wù)調(diào)度等工作Scrapy-Redis都已經(jīng)幫我們做好了,我們只需要繼承RedisSpider、指定redis_key就行了。
缺點(diǎn)是,Scrapy-Redis調(diào)度的任務(wù)是Request對象,里面信息量比較大(不僅包含url,還有callback函數(shù)、headers等信息),可能導(dǎo)致的結(jié)果就是會(huì)降低爬蟲速度、而且會(huì)占用Redis大量的存儲(chǔ)空間,所以如果要保證效率,那么就需要一定硬件水平。
一、安裝Redis
安裝Redis:http://redis.io/download
安裝完成后,拷貝一份Redis安裝目錄下的redis.conf到任意目錄,建議保存到:/etc/redis/redis.conf(Windows系統(tǒng)可以無需變動(dòng))
二、修改配置文件 redis.conf
打開你的redis.conf配置文件,示例:
非Windows系統(tǒng):
sudo vi /etc/redis/redis.confWindows系統(tǒng):
C:\Intel\Redis\conf\redis.conf
- Master端redis.conf里注釋
bind 127.0.0.1,Slave端才能遠(yuǎn)程連接到Master端的Redis數(shù)據(jù)庫。

-
daemonize yno表示Redis默認(rèn)不作為守護(hù)進(jìn)程運(yùn)行,即在運(yùn)行redis-server /etc/redis/redis.conf時(shí),將顯示Redis啟動(dòng)提示畫面;-
daemonize yes則默認(rèn)后臺(tái)運(yùn)行,不必重新啟動(dòng)新的終端窗口執(zhí)行其他命令,看個(gè)人喜好和實(shí)際需要。
-
-

三、測試Slave端遠(yuǎn)程連接Master端
測試中,Master端Windows 10 的IP地址為:192.168.199.108
-
Master端按指定配置文件啟動(dòng)
redis-server,示例:非Windows系統(tǒng):
sudo redis-server /etc/redis/redis/confWindows系統(tǒng):
命令提示符(管理員)模式下執(zhí)行redis-server C:\Intel\Redis\conf\redis.conf讀取默認(rèn)配置即可。
Master端啟動(dòng)本地
redis-cli:

- slave端啟動(dòng)
redis-cli -h 192.168.199.108,-h 參數(shù)表示連接到指定主機(jī)的redis數(shù)據(jù)庫


注意:Slave端無需啟動(dòng)redis-server,Master端啟動(dòng)即可。只要 Slave 端讀取到了 Master 端的 Redis 數(shù)據(jù)庫,則表示能夠連接成功,可以實(shí)施分布式。
四、Redis數(shù)據(jù)庫桌面管理工具
這里推薦 Redis Desktop Manager,支持 Windows、Mac OS X、Linux 等平臺(tái):


<footer class="page-footer" style="-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: transparent; text-size-adjust: none; display: block; margin-top: 50px; border-top: 1px solid rgb(204, 204, 204); overflow: hidden; padding: 10px 0px; font-size: 16px; color: rgb(128, 128, 128); margin-bottom: 0px !important; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: 0.2px; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">Copyright ? BigCat all right reserved,powered </footer>