我已阅读sc { - 3}的scrapy-redis,但仍然不太明白如何使用它。
我已经运行了名为dmoz的蜘蛛并且效果很好。但是,当我开始另一只名为mycrawler_redis的蜘蛛时,它什么都没有。
此外,我对如何设置请求队列感到困惑。我没有在示例项目中找到任何代码来说明请求队列设置。
如果不同机器上的蜘蛛想要共享同一个请求队列,我该如何完成它?看来我应该首先让奴隶机器连接到主机的redis,但是我不确定将相关代码放在哪个部分,在spider.py中或者我只是在命令行中输入它?
我对scrapy-redis很新,任何帮助都会受到赞赏!
答案 0 :(得分:2)
如果示例蜘蛛正在运行且您的自定义蜘蛛不起作用,那么必定会出现您做错的事情。使用代码更新您的问题,包括所有相关部分,以便我们可以看到出了什么问题。
除此之外,我对如何设置请求队列感到很困惑。一世 没有找到示例项目中的任何代码片段 请求队列设置。
就您的蜘蛛而言,这是通过适当的项目设置完成的,例如,如果您想要FIFO:
# Enables scheduling storing requests queue in redis.
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
# Don't cleanup redis queues, allows to pause/resume crawls.
SCHEDULER_PERSIST = True
# Schedule requests using a queue (FIFO).
SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.SpiderQueue'
就实现而言,排队是通过RedisSpider完成的,你必须从你的蜘蛛继承。您可以在此处找到用于将请求排入队列的代码:https://github.com/darkrho/scrapy-redis/blob/a295b1854e3c3d1fddcd02ffd89ff30a6bea776f/scrapy_redis/scheduler.py#L73
至于连接,您不需要手动连接到redis机器,只需在设置中指定主机和端口信息:
REDIS_HOST = 'localhost'
REDIS_PORT = 6379
此连接已在ċonnection.py
中配置:https://github.com/darkrho/scrapy-redis/blob/a295b1854e3c3d1fddcd02ffd89ff30a6bea776f/scrapy_redis/connection.py
使用示例可以在以下几个地方找到:https://github.com/darkrho/scrapy-redis/blob/a295b1854e3c3d1fddcd02ffd89ff30a6bea776f/scrapy_redis/pipelines.py#L17