scrapy-redis中url队列类型的控制(zset、list)

说明: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列表提取数据的方式提取

猜你喜欢

转载自blog.csdn.net/ryuhfxz/article/details/85782467