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文檔
- redis教程(菜鳥教程)
- redis命令參數
9-4~9 全部的小節主要是解讀scrapy-redis
可以看github上的scrapy-redis的使用方法。
bloomfilter 布隆過濾器 集成到scrapy-redis中。
源碼還沒有理解透徹,先不寫說明了。
相關代碼的請移步我的github:scrapy-redis應用的項目
作者:今孝
出處:http://www.cnblogs.com/jinxiao-pu/p/6838011.html
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。
覺得好就點個推薦把!