Python 刮屑-仅使用RabbitMQ或芹菜+;RabbitMQ用于抓取多个网站?

Python 刮屑-仅使用RabbitMQ或芹菜+;RabbitMQ用于抓取多个网站?,python,web-scraping,scrapy,rabbitmq,celery,Python,Web Scraping,Scrapy,Rabbitmq,Celery,我想运行多个蜘蛛来抓取许多不同的网站。我想要抓取的网站需要不同的时间来抓取(有些需要24小时,有些需要4小时,…)。我有多个工作人员(少于网站的数量)来启动scrapy,还有一个队列,我把我想要爬网的网站放在那里。工作人员完成对网站的爬网后,网站将返回队列,等待工作人员启动scrapy,以此类推。 问题是,小网站将被爬网的次数比大的,我希望所有的网站都被爬网相同的次数 我正在考虑使用RabbitMQ进行队列管理,并对一些网站进行优先级排序。 但当我搜索RabbitMQ时,它经常与芹菜一起使用。我

我想运行多个蜘蛛来抓取许多不同的网站。我想要抓取的网站需要不同的时间来抓取(有些需要24小时,有些需要4小时,…)。我有多个工作人员(少于网站的数量)来启动scrapy,还有一个队列,我把我想要爬网的网站放在那里。工作人员完成对网站的爬网后,网站将返回队列,等待工作人员启动scrapy,以此类推。 问题是,小网站将被爬网的次数比大的,我希望所有的网站都被爬网相同的次数

我正在考虑使用RabbitMQ进行队列管理,并对一些网站进行优先级排序。 但当我搜索RabbitMQ时,它经常与芹菜一起使用。我对这些工具的理解是芹菜将允许根据时间表启动一些代码,RabbitMQ将使用消息和队列定义执行顺序

就我而言,我不知道只使用RabbitMQ而不使用芹菜是否有效。另外,使用RabbitMQ对我的问题有帮助吗


谢谢

是的,使用RabbitMQ对您的用例非常有帮助,因为您的爬网代理可以利用消息队列来存储结果,而您的文档处理器则可以将其存储在您的数据库后端(在本回复中,我将假设为mongodb)和您的搜索引擎(这里我将假设为弹性搜索)中

在这个场景中,我们得到的是一个非常快速和动态的搜索引擎和可伸缩的爬虫程序

至于芹菜+兔肉+刮屑部分;芹菜将是一个很好的方式来安排您的刮擦爬虫和分布您的爬虫机器人在您的基础设施。芹菜只是使用RabbitMQ作为后端,在每个实例之间整合和分发作业。因此,对于同时使用芹菜和scrapy的用例,只需为scrapy bot编写代码,使用其自己的rabbitmq队列存储结果,然后编写一个文档处理器,将结果存储到持久数据库后端。然后设置芹菜以安排站点爬网的批次。加入
sched
模块,在爬行计划中保持一点理智


另外,回顾一下谷歌的工作,看看他们是如何解决在他们的算法和尊重sane robots.txt设置中过度抓取站点的问题的,你的抓取程序应该很好用。

欢迎使用堆栈溢出!请在投寄前确认邮件地址。谢谢