scrapy-redis 与 Scrapy的关系就像电脑与固态硬盘一样,是电脑中的一个插件,能让电脑更快的运行。
Scrapy 是一个爬虫框架,scrapy-redis 则是这个框架上可以选择的插件,它可以让爬虫跑的更快。
为什么使用 scrapy-redis
首先,在实际开发中,我们总会对爬虫速度表示不满,为啥这么慢,能不能跑快点。除了爬虫本身的优化,我们就要引入分布式爬虫的概念。
我自己对分布式爬虫的理解就是:多个爬虫执行同一个任务
这里说下,Scrapy本身是不支持分布式的,因为它的任务管理和去重全部是在机器内存中实现的。
在 Scrapy 中最出名的分布式插件就是scrapy-redis了,scrapy-redis的作用就是让你的爬虫快、更快、超级快。
scrapy-redis 如何工作
最简单的方式是使用redis替换机器内存,那么具体如何操作呢?非常简单,你只需要在 settings.py 中加上三代码,就能让你的爬虫变为分布式。
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
REDIS_START_URLS_AS_SET = True
SCHEDULER 是任务分发与调度,把所有的爬虫开始的请求都放在redis里面,所有爬虫都去redis里面读取请求。
DUPEFILTER_CLASS 是去重队列,负责所有请求的去重,REDIS_START_URLS