scrapy redis分布式爬蟲

2021-09-27 08:20:31 字數 1673 閱讀 5292

話不多說,先上scrapy-scrapy流程圖:

流程圖所示:

當客戶端從伺服器端拿去任務進行資料爬取時,客戶端產生的資料,url 會再次提交給伺服器,進行資料抓取,產生新的response,在爬取的時候,產生的大量資料,可能會導致爬蟲的速度變慢,占用redis大量的儲存空間。

scrapy-redis常用的配置:

1!.必須使用scrapy-redis的去重組件,在redis資料庫裡去重,

dupeilter_class  = "scrapy_redis.dupefilter.reodupefilter"
2!.使用scrapy_redis的排程器,在redis裡分配請求。

scheduler = "scrapy_redis.scheduler.scheduler"
3* .在redis中保持scrapy_redis用到的各個佇列,從而允許暫停和贊停恢復,也就不清理redis queues佇列

scheduler_persist = true
4! .通過配置redispipline將item寫入key為spider.name: items 的 redis的list中,供後面的分布式處理item 這個已經由 scrapy-redis 實現,不需要我們寫**,直接使用即可

item_pipelines =
5! .指定redis資料庫的連線引數

redis_host = '127.0.0.1' 

redis_port = 6379

scrapy-redis鍵名介紹:scrapy-redis中都是用key-value形式儲存資料,其中有幾個常見的key-value形式

1、 「專案名:items」 -->list 型別,儲存爬蟲獲取到的資料item 內容是 json 字串

2、 「專案名:dupefilter」 -->set型別,用於爬蟲訪問的url去重 內容是 40個字元的 url 的hash字串

3、 「專案名: start_urls」 -->list 型別,用於獲取spider啟動時爬取的第乙個url

4、 「專案名:requests」 -->zset型別,用於scheduler排程處理 requests 內容是 request 物件的序列化 字串

scrapy的例項:

# 2修改爬蟲檔案:

start_url 的寫法寫成key:value格式。

##在redis中執行**需要帶上起始url:

在redis中設定乙個鍵值對, 鍵為dd:start_url 值為初始url ,,,分布式既如此。

scrapy,redis分布式爬取貓眼電影!

能夠利用redis快取資料庫的優點去重來避免資料的大面積冗餘 1 首先就是要建立貓眼爬蟲專案 2 進入專案內部建立乙個爬蟲檔案 建立完檔案之後就是要爬取的內容,我這邊以爬取貓眼電影的title和link為例 這個完全看個人你可以先去寫爬蟲,然後再來寫items檔案 3 編寫item檔案 python...

10 給予scrapy redis的分布式爬蟲

pip install scrapy redis scrapy redis提供了兩種爬蟲 from scrapy redis.spiders import redisspider class myspider redisspider spider that reads urls from redis...

scrapy redis分布式爬蟲

依賴環境 scrapy 1.1 redis 2.8 分布式爬蟲 將乙個專案拷貝到多台電腦上,同時爬取資料。1.必須保證所有電腦上的 是相同的配置。2.在其中一台電腦上啟動redis和mysql的資料庫服務。3.同時將所有的爬蟲專案執行起來。4.在啟動redis和mysql資料庫的電腦上,向redis...