基於scrapy redis的兩種分布式爬蟲

2022-02-24 06:11:21 字數 1342 閱讀 2054

redis分布式部署

1.scrapy框架是否可以自己實現分布式?

- 不可以。原因有二。

其一:因為多台機器上部署的scrapy會各自擁有各自的排程器,這樣就使得多台機器無法分配start_urls列表中的url。(多台機器無法共享同乙個排程器)

其二:多台機器爬取到的資料無法通過同乙個管道對資料進行統一的資料持久出儲存。(多台機器無法共享同乙個管道)

2.基於scrapy-redis元件的分布式爬蟲

- scrapy-redis元件中為我們封裝好了可以被多台機器共享的排程器和管道,我們可以直接使用並實現分布式資料爬取。

- 實現方式:

1.基於該元件的redisspider類

2.基於該元件的rediscrawlspider類

3.分布式實現流程:上述兩種不同方式的分布式實現流程是統一的

- 3.2 redis配置檔案的配置:

- 將yes該為no:protected-mode no,表示可以讓其他ip操作redis

- 將爬蟲類的父類修改成基於redisspider或者rediscrawlspider。注意:如果原始爬蟲檔案是基於spider的,則應該將父類修改成redisspider,如果原始爬蟲檔案是基於crawlspider的,則應該將其父類修改成rediscrawlspider。

- 注釋或者刪除start_urls列表,切加入redis_key屬性,屬性值為scrpy-redis元件中排程器佇列的名稱

3.4 在配置檔案中進行相關配置,開啟使用scrapy-redis元件中封裝好的管道

'scrapy_redis.pipelines.redispipeline': 400

}3.5 在配置檔案中進行相關配置,開啟使用scrapy-redis元件中封裝好的排程器

dupefilter_class = "scrapy_redis.dupefilter.rfpdupefilter"

# 使用scrapy-redis元件自己的排程器

scheduler = "scrapy_redis.scheduler.scheduler"

# 是否允許暫停

scheduler_persist = true

redis_port = 6379

redis_encoding = 『utf-8』

redis_params =

3.7 開啟redis伺服器:redis-server 配置檔案

3.8 開啟redis客戶端:redis-cli

3.9 執行爬蟲檔案:scrapy runspider spiderfile

3.10 向排程器佇列中扔入乙個起始url(在redis客戶端中操作):lpush redis_key屬性值 起始url

基於scrapy redis兩種形式的分布式爬蟲

redis分布式部署 1.scrapy框架是否可以自己實現分布式?不可以.原因有二.其一 因為太多台機器上部署的scrapy會各自擁有各自的排程器,這樣就是的多台機器無法分配start url列表中的url.多台機器無法共享同乙個排程器 其二 多台機器爬取到的資料無法通過同乙個管道資料進行統一的資料...

基於scrapy redis的分布式爬蟲配置

基於scrapy的爬蟲只能是單機式爬蟲,而借助scrapy redis可實現分布式爬蟲 首先要安裝scrapy redis pip install scrapy redis在此之前,應該已經裝好了scrapy和redis 新建乙個scrapy專案和爬蟲檔案 使用scrapy redis的去重組件,在...

基於scrapy redis部署分布式爬蟲

基於scrapy redis部署分布式爬蟲 準備工作,主機需要開啟redis服務,進入redis目錄,在命令列工具中輸入 redis server redis windows.conf 3.使用pycharm開啟專案,找到settings檔案,配置scrapy專案使用的排程器及過濾器 4.修改spi...