说明:scrapy-redis在进行数据请求是能够实现url的自动保存到redis中,但是保存的数据结构类型是和setting配置文件中的优先级队列的选择挂钩的。
注意:当url的保存类型和url的提取方式不匹配会报错
比如:通过list数据结构的数据提取的方式提取zset中的数据
redis中list的数据提取方式:lpush key
redis中zset的数据提取方式:zrange key start end
(error) WRONGTYPE Operation against a key holding the wrong kind of value
一、三种优先级队列:
# 指定排序爬取地址时使用的队列,
# 默认的 按优先级排序(Scrapy默认),由sorted set实现的一种非FIFO、LIFO方式。
# SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.SpiderPriorityQueue'
# 可选的 按先进先出排序(FIFO)
SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.SpiderQueue'
# 可选的 按后进先出排序(LIFO)
# SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.SpiderStack'
二、优先级队列对应url在redis中保存的数据类型
scrapy-redis默认的优先级队列:zset
先进先出(FIFO):list
先进后出(LIFO):list
三、队列提取方式的选择
REDIS_START_URLS_AS_SET = True
可以在setting配置文件中配置这一行代码。
True:redis中以set集合提取数据的方式提取
False:redis中以list列表提取数据的方式提取