简介
scrapy_redis是一个基于Redis的Scrapy组件,用于scrapy项目的分布式部署和开发
你可以启动多个spider对象,互相之间共享有一个redis的request队列,最适合多个域名的广泛内容的爬取
特点
分布式爬取
分布式数据处理
爬取到的item数据被推送到redis中,这意味着你可以启动尽可能多的item处理程序
scrapy即插即用
scrapy调度程序+过滤器,项目管道,base spidre
安装
pip install scrapy-redis
使用
首先创建scrapy的项目
在settings修改默认的调度器和过滤
SCHEDULER = 'scrapy_redis.scheduler.Scheduler'
DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter'
SCHEDULER_PERSIST = True
在spider里面修改继承的类RedisSpider,属性redis_key
常用设置
# 启用调度将请求存储进redis SCHEDULER = "scrapy_redis.scheduler.Scheduler"
# 确保所有spider通过redis共享相同的重复过滤 DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
# 不清理redis队列,允许暂停/恢复抓取 SCHEDULER_PERSIST = True
# 指定连接到Redis时要使用的主机和端口 REDIS_HOST = 'localhost'
REDIS_PORT = 6379
redis中存储的数据
spidername:items list类型,保存爬虫获取到的数据item内容是json字符串
spidername:dupefilter set类型,用于爬虫访问的URL去重,内容是40个字符的url的hash字符串
spidername:start_urls list类型,用于接收redisspider启动时的第一个url
spidername:requests zset类型,用于存放requests等待调度。内容是requests对象的序列化字符串