在scrapy中使用scrapy-rabbitmq-scheduler会出现报错
ModuleNotFoundError: No module named 'scrapy.utils.reqser'原因是新的版本的scrapy已经摒弃了该方法,但是scrapy-rabbitmq-scheduler 没有及时的更新,所以此时有两种解决方法
方法一.将scrapy回退至旧版本,找到对应的旧版本
方法二.更改scrapy-rabbitmq-scheduler的源码,我已经重新发了新版本的包
pip install scrapy-rabbitmq-task
然后再次尝试运行代码,发现代码已正常
其他配置都不改变
在spider爬虫文件文件添加
# 请求队列queue_name = 'scrape'# 结果队列items_key = 'scrape.result'custom_settings = {"COOKIES_ENABLED": "False",# 指定重试的http状态码(重新加回队列重试)"SCHEDULER_REQUEUE_ON_STATUS" :[500],'SCHEDULER': "scrapy_rabbitmq_scheduler.scheduler.SaaS",'RABBITMQ_CONNECTION_PARAMETERS': 'amqp://acount:111@2024@127.0.0.1:5672/?heartbeat=0','MEDIA_ALLOW_REDIRECTS': True,'RABBITMQ_CONFIRM_DELIVERY': False,'ALLOW_REDIRECTS': True,'RETRY_ENABLED': True,'RETRY_TIMES': 5,'DOWNLOAD_TIMEOUT': 50,'RETRY_HTTP_CODES': [429, 304, 500, 503],# 指定下载器中间件, 确认任务是否成功"DOWNLOADER_MIDDLEWARES": {'scrapy_rabbitmq_scheduler.middleware.RabbitMQMiddleware': 999},# 指定item处理方式, item会加入到rabbitmq中'ITEM_PIPELINES': {'scrapy_rabbitmq_scheduler.pipelines.RabbitMQPipeline': 301,},'FILTER_EMPTY_ITEM': True,}
问题解决
注:我这里采用版本是Scrapy==2.11.2