基於scrapy-redis組件的分佈式爬蟲

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

相關文章
相關標籤/搜索