如何使用scrapy-redis的例子

时间:2015-04-28 03:54:35

标签: web-scraping scrapy scrapy-spider

我已阅读sc { - 3}的scrapy-redis,但仍然不太明白如何使用它。

我已经运行了名为dmoz的蜘蛛并且效果很好。但是,当我开始另一只名为mycrawler_redis的蜘蛛时,它什么都没有。

此外,我对如何设置请求队列感到困惑。我没有在示例项目中找到任何代码来说明请求队列设置。

如果不同机器上的蜘蛛想要共享同一个请求队列,我该如何完成它?看来我应该首先让奴隶机器连接到主机的redis,但是我不确定将相关代码放在哪个部分,在spider.py中或者我只是在命令行中输入它?

我对scrapy-redis很新,任何帮助都会受到赞赏!

1 个答案:

答案 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