解决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以上版本,推荐使用第三种方法,简介明了。如果是更低版本,推荐使用第二种方法,多点判断也未尝不可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章