我有一个包含多个蜘蛛的 scrapy 项目。有什么方法可以定义哪个管道用于哪个蜘蛛?并非我定义的所有管道都适用于每个蜘蛛。
谢谢
原文由 CodeMonkeyB 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个包含多个蜘蛛的 scrapy 项目。有什么方法可以定义哪个管道用于哪个蜘蛛?并非我定义的所有管道都适用于每个蜘蛛。
谢谢
原文由 CodeMonkeyB 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答884 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
基于 Pablo Hoffman 的解决方案,您可以在 Pipeline 对象的
process_item
方法上使用以下装饰器,以便它检查pipeline
您的蜘蛛的属性是否应该被执行。例如:为了让这个装饰器正常工作,蜘蛛必须有一个管道属性,其中包含一个管道对象的容器,你想用它来处理项目,例如:
然后在
pipelines.py
文件中:所有 Pipeline 对象仍应在设置中的 ITEM_PIPELINES 中定义(以正确的顺序 - 最好更改以便也可以在 Spider 上指定顺序)。