现在来看一个问题:当存在多个爬虫的时候如何指定对应的管道呢?
这里定义了两个爬虫:film、meiju
1.首先想到settings设置文件。
settings里针对item_pipelines的设置如下:
内置设置参考:ITEM_PIPELINES
默认: {}
包含要使用的项目管道及其顺序的字典。顺序值是任意的,但通常将它们定义在0-1000范围内。较低订单处理较高订单前。
例:
对应管道文件:
但是我遇到一个问题,当我单独运行film或者meiju时总会指定到settings里的第一个配置管道,也就是都会写入到my_meiju_jianjie.txt文本文件中。
因为setting.py中的都是全局属性的,scrapy有多个spider的时候就要用custom_setting配置。见方法三。
2.第二,可以在 pipeline 里判断是哪个爬虫的结果
settings里配置:
在pipeline文件里编写类MysipiderPipeline:
根据不同的爬虫名字,处理不同的逻辑,很完美,可以使用。
3.直接在爬虫里设置管道
stakoverflow里曾有有提出这个问题:https://stackoverflow.com/questions/8372703/how-can-i-use-different-pipelines-for-different-spiders-in-a-single-scrapy-proje/34647090#34647090
给出的最佳答案也是在单个爬虫里设置,不过要求scrapy版本必须是1.1以上。
本文介绍了在Scrapy中处理多个爬虫(film和meiju)时如何指定不同管道的方法。首先尝试在settings文件中配置,但发现无法针对单独爬虫生效。接着,提出在pipeline类中通过判断爬虫名称来实现不同逻辑,这是一种可行方案。最后,建议对于Scrapy 1.1及以上版本,直接在爬虫内部设置管道,这是更简洁的方式,而较低版本则可以采用在pipeline中进行爬虫判断的方法。
订阅专栏 解锁全文
3万+

被折叠的 条评论
为什么被折叠?



