(2018-05-23.Python從Zero到One)7、(爬蟲)scrapy-Redis實(shí)戰(zhàn)__1.7.0從零搭建Redis-Scrapy分布式爬蟲

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

day57_爬蟲-scrapy-Redis實(shí)戰(zhàn)-01.png

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

day57_爬蟲-scrapy-Redis實(shí)戰(zhàn)-02.png
  1. 首先Slaver端從Master端拿任務(wù)(Request、url)進(jìn)行數(shù)據(jù)抓取,Slaver抓取數(shù)據(jù)的同時(shí),產(chǎn)生新任務(wù)的Request便提交給 Master 處理;

  2. 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.conf

  • Windows系統(tǒng):C:\Intel\Redis\conf\redis.conf

  1. Master端redis.conf里注釋bind 127.0.0.1,Slave端才能遠(yuǎn)程連接到Master端的Redis數(shù)據(jù)庫。
day57_爬蟲-scrapy-Redis實(shí)戰(zhàn)-03.png
    • 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í)際需要。
day57_爬蟲-scrapy-Redis實(shí)戰(zhàn)-04.png

三、測試Slave端遠(yuǎn)程連接Master端

測試中,Master端Windows 10 的IP地址為:192.168.199.108

  1. Master端按指定配置文件啟動(dòng) redis-server,示例:

    • 非Windows系統(tǒng):sudo redis-server /etc/redis/redis/conf

    • Windows系統(tǒng):命令提示符(管理員)模式下執(zhí)行 redis-server C:\Intel\Redis\conf\redis.conf讀取默認(rèn)配置即可。

  2. Master端啟動(dòng)本地redis-cli

day57_爬蟲-scrapy-Redis實(shí)戰(zhàn)-05.png
  1. slave端啟動(dòng)redis-cli -h 192.168.199.108,-h 參數(shù)表示連接到指定主機(jī)的redis數(shù)據(jù)庫
day57_爬蟲-scrapy-Redis實(shí)戰(zhàn)-06.png
day57_爬蟲-scrapy-Redis實(shí)戰(zhàn)-07.png
注意: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):

下載地址:https://redisdesktop.com/download

day57_爬蟲-scrapy-Redis實(shí)戰(zhàn)-08.png
day57_爬蟲-scrapy-Redis實(shí)戰(zhàn)-09.png

<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>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容