要實現(xiàn)只使用scrapy-redis的去重和保存功能的話只需要修改settings文件就可以了
要實現(xiàn)只使用scrapy-redis的去重和保存功能,只需要修改settings里面的設置信息
爬蟲文件不需要動
這里是使用scrapy-redis自己實現(xiàn)了去重組件,不在使用scrapy的框架內部的去重組件
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
這里是使用scrapy自己實現(xiàn)的調度器,不在使用scrapy內部的調度器組件
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
允許暫停和恢復,redis將會保存我們之前的請求記錄,
SCHEDULER_PERSIST = True
request的三中隊列模式scrapy 默認使用的一種隊列模式,有自己的優(yōu)先級(里面實質是使用了redis的有序集合)
SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderPriorityQueue"
使用了堆的形式(請求任務先進先出)
SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderQueue"
棧的形式(先進后出)
SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderStack"
配置redis數(shù)據(jù)庫的信息
指定redis數(shù)據(jù)庫的host(公網ip)(要存儲數(shù)據(jù)redis的主機ip)
REDIS_HOST = '127.0.0.1'
REDIS_HOST = '118.24.255.219'
制定redis數(shù)據(jù)庫的端口號(要存儲數(shù)據(jù)redis的主機端口)
REDIS_PORT = 6379
指定redis保存數(shù)據(jù)時的字符集
REDIS_ENCODING = 'utf-8'
如果我們要實現(xiàn)通用爬蟲的分布式爬取的話
我們不僅要修改settings文件如上,
還要在爬蟲文件中把我們繼承的類換為class QdSpider(RedisCrawlSpider):
導入from scrapy_redis.spiders import RedisCrawlSpider
class QdSpider(RedisCrawlSpider):
在將我們的start_urls改為redis_keys
在redis_keys = '項目名稱:start_urls'
設置redis_keys作用是讓我們的調度器從redis數(shù)據(jù)庫里取到起始任務
我們只需要在redis數(shù)據(jù)庫里面定義一個起始的任務就可以了
如果我們要實現(xiàn)普通爬蟲的分布式怕去的話
我們也是不僅要修改settings文件,
還要在爬蟲文件中把我們繼承的類換為,class RedisSpider
導入from scrapy.redis.spider import RedisSpider
在將我們的start_urls改為redis_keys
在redis_keys = '項目名稱:start_urls'
設置redis_keys作用是讓我們的調度器從redis數(shù)據(jù)庫里取到起始任務
我們只需要在redis數(shù)據(jù)庫里面定義一個起始的任務就可以了
以上三種分布式方式的settigns的樣式都是一樣的只是爬蟲文件里繼承的類不同