第9章 scrapy-redis分布式爬蟲


9-1 分布式爬蟲要點

1.分布式的優點

  • 充分利用多機器的寬帶加速爬取
  • 充分利用多機的IP加速爬取速度

問:為什么scrapy不支持分布式?

答:在scrapy中scheduler是運行在隊列的,而隊列是在單機內存中的,服務器上爬蟲是無法利用內存的隊列做任何處理,所以scrapy不支持分布式。

2.分布式需要解決的問題

  • requests隊列集中管理
  • 去重集中管理

所以要用redis來解決。

9-2~3 redis基礎知識

Ⅰ.redis的安裝(windows 64位)

1.百度:redis for windows 找到github上的安裝包

如圖點進去下載

cmd切換到下載的目錄中

輸入以下命令即可運行

這樣已經啟動了,可以輸入相關的命令進行測試。

Ⅱ、Redis的數據類型

  • 字符串
  • 散列/哈希
  • 列表
  • 集合
  • 可排序集合

1.字符串命令

set mykey ''cnblogs''   創建變量

get mykey   查看變量

getrange mykey start end   獲取字符串,如:get name 2 5 #獲取name2~5的字符串

strlen mykey   獲取長度

incr/decr mykey    加一減一,類型是int

append mykey ''com''   添加字符串,添加到末尾

2.哈希命令

hset myhash name "cnblogs"   創建變量,myhash類似於變量名,name類似於key,"cnblogs"類似於values

hgetall myhash   得到key和values兩者

hget myhash  name  得到values

hexists myhash name  檢查是否存在這個key

hdel myhash name   刪除這個key

hkeys myhash   查看key

hvals muhash   查看values

3.列表命令

lpush/rpush mylist "cnblogs"  左添加/右添加值

lrange mylist 0 10   查看列表0~10的值

blpop/brpop key1[key2] timeout   左刪除/右刪除一個,timeout是如果沒有key,等待設置的時間后結束。

lpop/rpop key   左刪除/右刪除,沒有等待時間。

llen key  獲得長度

lindex key index    取第index元素,index是從0開始的

4.集合命令(不重復)

sadd myset "cnblogs"   添加內容,返回1表示不存在,0表示存在

scard key  查看set中的值

sdiff key1 [key2]   2個set做減法,其實就是減去了交際部分

sinter key1 [key2]    2個set做加法,其實就是留下了兩者的交集

spop key   隨機刪除值

srandmember key member  隨機獲取member個值

smember key   獲取全部的元素

5.可排序集合命令

zadd myset 0 ‘project1’ [1 ‘project2’]   添加集合元素;中括號是沒有的,在這里是便於理解  

zrangebyscore myset 0 100   選取分數在0~100的元素

zcount key min max   選取分數在min~max的元素的個數

Ⅲ、Redis文檔

  1. redis教程(菜鳥教程)
  2. redis命令參數

9-4~9 全部的小節主要是解讀scrapy-redis

可以看github上的scrapy-redis的使用方法。

bloomfilter 布隆過濾器 集成到scrapy-redis中。

源碼還沒有理解透徹,先不寫說明了。


相關代碼的請移步我的githubscrapy-redis應用的項目

作者:今孝
出處:http://www.cnblogs.com/jinxiao-pu/p/6838011.html 
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。

覺得好就點個推薦把!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM