scrapy-redis組件安裝
- 下載scrapy-redis組件:pip install scrapy-redisredis
- 更改redis配置文件:服務器
註釋該行:bind 127.0.0.1,表示能夠讓其餘ip訪問redis
將yes該爲no:protected-mode no,表示能夠讓其餘ip操做redis
- 基於scrapy-redis組件的分佈式爬蟲scrapy
- scrapy-redis組件中爲咱們封裝好了能夠被多臺機器共享的調度器和管道,咱們能夠直接使用並實現分佈式數據爬取。分佈式
- 實現方式:ide
1.基於該組件的RedisSpider類post
2.基於該組件的RedisCrawlSpider類url
分佈式實現流程
- 修改爬蟲文件中的相關代碼spa
- 將爬蟲類的父類修改爲基於RedisSpider或者RedisCrawlSpider。
注意:若是原始爬蟲文件是基於Spider的,則應該將父類修改爲RedisSpider,若是原始爬蟲文件是基於CrawlSpider的,則應該將其父類修改爲RedisCrawlSpider。
- 註釋或者刪除start_urls列表,切加入redis_key屬性,屬性值爲scrpy-redis組件中調度器隊列的名稱
- 在配置文件中進行相關配置,開啓使用scrapy-redis組件中封裝好的管道code
ITEM_PIPELINES = { 'scrapy_redis.pipelines.RedisPipeline': 400 }
- 在配置文件中進行相關配置,開啓使用scrapy-redis組件中封裝好的調度器server
# 使用scrapy-redis組件的去重隊列 DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter" # 使用scrapy-redis組件本身的調度器 SCHEDULER = "scrapy_redis.scheduler.Scheduler" # 是否容許暫停 SCHEDULER_PERSIST = True
- 在配置文件中進行爬蟲程序連接redis的配置
REDIS_HOST = 'redis服務的ip地址' REDIS_PORT = 6379 REDIS_ENCODING = ‘utf-8’ REDIS_PARAMS = {‘password’:’123456’}
- 開啓redis服務器:redis-server 配置文件
- 開啓redis客戶端:redis-cli
- 運行爬蟲文件:scrapy runspider SpiderFile
- 向調度器隊列中扔入一個起始url(在redis客戶端中操做):lpush redis_key屬性值 起始url