本文主要是介绍解决scrapy爬虫框架多个spider指定pipeline,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
现在来看一个问题:当存在多个爬虫的时候如何指定对应的管道呢?
这里定义了两个爬虫: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以上。
我的爬虫内的设置:
film:
meiju:
因为要对应找到每个爬虫指定的管道,所以settings里也要进行管道配置:
对应管道文件:
亲测完美指定配置的通道~
总结:
如果你的scrapy是1.1以上版本,推荐使用第三种方法,简介明了。如果是更低版本,推荐使用第二种方法,多点判断也未尝不可
这篇关于解决scrapy爬虫框架多个spider指定pipeline的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!