day8、linux下安裝Scrapy和Redis-分布式使用

1哭尝、Linux下安裝scrapy

? 如果沒有pip先下載

? sudo apt-get install python-pip

? scrapy框架有可能依賴于下面的兩個庫

? sudo apt-get install python-dev

? sudo apt-get install libevent-dev

? pip install scrapy

2哥攘、redis安裝

? Linux下安裝:

? cd 壓縮包的路徑下(cd Desktop)

? tar -zxvf redis-3.2.8.tar.gz

? cp -r ./redis-3.2.8 /usr/local/redis (如果被拒絕,用sudo cp ...)

? sudo make install

? 如果有錯材鹦,請輸入指令:sudo make MALLOC=libc

? 運行起來服務(wù)器:

? cd /usr/local/redis/src

? ./redis-server

? 服務(wù)器啟動以后逝淹,該redis數(shù)據(jù)就可以處理數(shù)據(jù)了;操作該數(shù)據(jù)庫需要打開其客戶端

? 另開一個終端

? cd /usr/local/redis/src

? ./redis-cli

? 127.0.0.1:6379>ping

? PONG 說明服務(wù)器打開成功

? 關(guān)閉服務(wù)器

? 在客戶端輸入命令:shutdown [nosave|save]

? 【注意】如果是遠程連接的客戶端桶唐,則不能shutdown

? 遠程訪問:redis-cli -h xxx.xx.xx.xx -port 6379 -a password

? redis-cli -h 10.36.135.43

? 在windows中栅葡,redis-server默認不允許遠程訪問,可以在配置文件中打開

? 配置即是redis目錄下的redis.windows.conf

? 然后修改如下:

? 56行注釋掉 即: # bind 127.0.0.1

? 75行把后面值改成 no 即:protected-mode no

? 然后把服務(wù)器重啟即可

3尤泽、redis介紹

? Redis 是完全開源免費的欣簇,遵守BSD協(xié)議,是一個高性能的key-value數(shù)據(jù)庫

? Redis與其他key-value緩存機制相比有一下特點:

? Redis支持數(shù)據(jù)的持久化坯约,可以將內(nèi)存中的數(shù)據(jù)保存到磁盤

? Redis不僅支持key-value類型的數(shù)據(jù)熊咽,同時還支持list、set闹丐、zset横殴、hash

? Redis支持數(shù)據(jù)的備份,即master-slave模式的數(shù)據(jù)備份

?

? 支持的五大數(shù)據(jù)類型:string卿拴、hash衫仑、list梨与、set、zset

? 如何將數(shù)據(jù)存入Redis數(shù)據(jù)惑畴?通過指令來存(每種數(shù)據(jù)類型存儲都對應(yīng)著一種指令)

? 1)字符串:string是redis的最基本的類型蛋欣,redis默認最大能夠存儲512M的數(shù)據(jù) 字符串的指令是set和get

? (1)設(shè)置鍵值

? 普通鍵值:set key value (如:set name 'wuyali')

? 鍵的生存時間:setex key seconds 10 (如:setex sex 10 'M')

? 設(shè)置多個鍵值:mset key value [key value ...]

? (2) 獲取 :get key

? 獲取多個:get key [key ... ]

? (3) 運算 :要求值是字符串類型的數(shù)字

? 加1:incr key

? 減1:decr key

? 加若干:incrby key intnum

? 減若干:decrby key intnum

? (4) 其他

? 追加值: appned key value

? 獲取值得長度:strlen key

? 2、key的操作

? 1)查找鍵如贷,參數(shù)支持正則

? keys pattern

? 2)判斷是否存在

? exists key

? 3)查看key對應(yīng)的value的類型

? type key

? 4)刪除鍵及其對應(yīng)的值

? del key [key ... ]

? 5)設(shè)置過期

? expire key seconds

? 6)查看有效時間

? ttl key

? 3陷虎、hash

? hash在這里主要是存儲對象(或者字典)

? {

? name:"JackMa",

? age:18

? }

? 指令:hset

? 1、設(shè)置

? 設(shè)置單值:hset key field value (此時key代表數(shù)據(jù)中的鍵杠袱,值就是field value這個鍵值對)

? 設(shè)置多值:hmset key field value [field value]

? 2尚猿、獲取

? 獲取一個屬性的值:hget key field

? 獲取多個屬性的值:hmget key field [field...]

? 獲取key對應(yīng)的所有的屬性和值:hgetall key

? 獲取所有的屬性:hkeys key

? 獲取所有的值:hvals key

? 其他指令:

? hlen key

? hexiste key field

? hdel key field

? 4、list類型: 列表的元素類型是string

? ["qwer",'asdw','1234']

? 1楣富、設(shè)置

? 在頭部插入:lpush key value [ value....]

? 在尾部插入:rpush key value [vlaue ...]

? 在一個元素的前部|后部插入:linsert key before|after pivot value (如:linsert stars before 'A' 'B')

? 設(shè)置指定索引的元素值

? lset key index value

? 2凿掂、獲取

? 1)移除并返回key對應(yīng)的list的第一個元素:lpop key

? 2)移除并返回key對應(yīng)的list的嘴一個元素:rpop key

? 3)返回存儲在key的列表中的指定范圍的元素:lrange key start end

? llen key

? lindex key index

? ltrim key start end

? 5、set : 無序集合纹蝴,元素類型為string類型庄萎,元素不能重復

? 添加元素:sadd key member [member ... ]

? 獲取:

? 根據(jù)可以返回集合所有的元素:smembers key

? 返回幾個的元素個數(shù):scard key

? 運算

? 交集:sinter key [key ... ]

? 并集:sunion key [ key ... ]

? 差集:sdiff key [key ...]

? 判斷元素是否在集合中:sismember key member

? 6塘安、zset : 有序集合糠涛,元素類型string,元素具有唯一性

? 添加: zadd key score member [score member]

                (score 優(yōu)先級別  索引順序從0開始排)

? 獲燃娣浮:zrange key star end

? zcard key 獲取個數(shù)

? score的值在min和max之間的元素的個數(shù): zcount key min max

? 【注】在一個Redis鏈接中總共有16個數(shù)據(jù)忍捡,我們可以自主選擇,指令如下:

? select 0-15

4切黔、分布式使用

? scrapy_redis組件

? pip install scrapy_redis

1砸脊、scrapy和scrapy_redis的區(qū)別

? scrapy是一個通用的爬蟲框架,不支持分布式

? scrapy_redis就是為實現(xiàn)scrapy的分布式而誕生的纬霞,它里面提功了redis的組件凌埂,通過這些redis組件,就可以實現(xiàn)分布式

? 2诗芜、官網(wǎng)案例

? http://github.com/rmax/scrapy-redis

? 三個樣本

? dmoz.py 傳統(tǒng)的CrawlSpider侨舆,目的就是把數(shù)據(jù)保存在redis,運行方式 指令:scrapy crawl dmoz

? myspider_redis.py 繼承自RedisCrawlSpider绢陌,start_url被redis_key給取代了,其他地方不變

分布式爬蟲開發(fā)的步驟:

? 把原來普通的部署在分布式的系統(tǒng)上運行熔恢,就構(gòu)成了分布式爬蟲

? 1脐湾、環(huán)境部署

? scrapy: 爬蟲運行的基礎(chǔ) (如果服務(wù)端不參與分布式的爬取可以不裝)

? scrapy_redis :組件(也可以認為是scrapy和redis交互的中間件),用于把scrapy爬蟲和redis數(shù)據(jù)庫聯(lián)系起來

? redis服務(wù)器:用于存儲分布式爬蟲爬取到的數(shù)據(jù)叙淌,一般情況下我們將redis服務(wù)器部署在Linux系統(tǒng)上秤掌,Windows上也可安裝(但是這個服務(wù)不能用于生產(chǎn)環(huán)境)愁铺;無論是在Linux上還是在Windows上,都必須配置其能夠遠程訪問

? 2、測試redis服務(wù)器是否聯(lián)通

? 如果ping了不PONG

? 1)服務(wù)器沒有配置遠程連接

? 2)服務(wù)器崩潰

? 3)服務(wù)器出現(xiàn)沖突 config set stop-writes-on-bgsave-error no

? 4)其他意外情況:http://www.baidu.com

? 3闻鉴、在普通的scrapy爬蟲框架下去爬取茵乱,保證爬蟲爬取的數(shù)據(jù)沒有錯誤再去分布式系統(tǒng)上部署

? 測試數(shù)據(jù)格式是否正確

? 先測:json 目的主要是看代碼是否有誤 【比如:用xpath的時候路徑寫錯等】

? 再測redis 目的主要是看一下有木有系統(tǒng)級的錯誤 【如:redis服務(wù)器崩潰】

4、部署分布式

? 服務(wù)器端(master端):

? 可以用某一臺主機作為redis服務(wù)器的運行方(即服務(wù)端)孟岛,也稱為master

? 客戶端(slaver端):

? 1)把普通爬蟲修改成分布式瓶竭,去掉start_urls(不讓slaver隨意的執(zhí)行),替換成redis_key(為了讓master能夠控制slaver的爬去)

2)修改自己配置文件渠羞,即在配置文件中加上scrapy_redis的組件

5斤贰、爬去
slaver端:首先要運行起來,等待master發(fā)出起始地址再開始
master端:在適當?shù)臅r候像redis服務(wù)器中放入一個起始地址的列表

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末次询,一起剝皮案震驚了整個濱河市荧恍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌屯吊,老刑警劉巖送巡,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異盒卸,居然都是意外死亡骗爆,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門世落,熙熙樓的掌柜王于貴愁眉苦臉地迎上來淮腾,“玉大人,你說我怎么就攤上這事屉佳」瘸” “怎么了?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵武花,是天一觀的道長圆凰。 經(jīng)常有香客問我,道長体箕,這世上最難降的妖魔是什么专钉? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮累铅,結(jié)果婚禮上跃须,老公的妹妹穿的比我還像新娘。我一直安慰自己娃兽,他們只是感情好菇民,可當我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般第练。 火紅的嫁衣襯著肌膚如雪阔馋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天娇掏,我揣著相機與錄音呕寝,去河邊找鬼。 笑死婴梧,一個胖子當著我的面吹牛下梢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播志秃,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼怔球,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了浮还?” 一聲冷哼從身側(cè)響起竟坛,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钧舌,沒想到半個月后担汤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡洼冻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年崭歧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撞牢。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡率碾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出屋彪,到底是詐尸還是另有隱情所宰,我是刑警寧澤,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布畜挥,位于F島的核電站仔粥,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蟹但。R本人自食惡果不足惜躯泰,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望华糖。 院中可真熱鬧麦向,春花似錦、人聲如沸客叉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至秀撇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間向族,已是汗流浹背呵燕。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留件相,地道東北人再扭。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像夜矗,于是被迫代替她去往敵國和親泛范。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,652評論 2 354

推薦閱讀更多精彩內(nèi)容

  • scrapy是不支持分布式的紊撕。分布式爬蟲應(yīng)該是在多臺服務(wù)器(A B C服務(wù)器)罢荡,他們不會重復交叉爬取(需要用到狀態(tài)...
    中乘風閱讀 20,526評論 0 19
  • 前言 scrapy是python界出名的一個爬蟲框架。Scrapy是一個為了爬取網(wǎng)站數(shù)據(jù)对扶,提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)...
    以后的以后_hzh閱讀 2,264評論 0 14
  • 這個項目也是初窺python爬蟲的一個項目区赵,也是我的畢業(yè)設(shè)計,當時選題的時候浪南,發(fā)現(xiàn)大多數(shù)人選擇的都是網(wǎng)站類笼才,實在是...
    夢航韓語閱讀 2,998評論 2 37
  • 風吹麥浪, 暈暈的晃络凿, 晶瑩的陽光骡送, 灑落一片稻花香。 (收獲是需要不盡的努力絮记,只要你用心對待摔踱,溫暖就會與你不期而遇)
    o艾柒o閱讀 125評論 0 0
  • 第一次接觸數(shù)據(jù)組的工作,內(nèi)心忐忑到千,恐不能做好昌渤,幸不出大錯。 1.在精讀營期間憔四,主要負責的工作如下: 001 每日統(tǒng)...
    巧兒踐行者閱讀 358評論 5 5