scrapy爬虫框架多个spider指定pipeline

前言:scrapy是个非常不错的处理高并发的爬虫框架,其底层是异步框架 twisted,优势明显。

现在来看一个问题:当存在多个爬虫的时候如何指定对应的管道呢?

 

这里定义了两个爬虫:filmmeiju

 

1.首先想到settings设置文件。

settings里针对item_pipelines的设置如下:

内置设置参考:ITEM_PIPELINES
默认: {}

包含要使用的项目管道及其顺序的字典。顺序值是任意的,但通常将它们定义在0-1000范围内。较低订单处理较高订单前。

例:

scrapy爬虫框架多个spider指定pipeline_第1张图片

对应管道文件:

scrapy爬虫框架多个spider指定pipeline_第2张图片

但是我遇到一个问题,当我单独运行film或者meiju时总会指定到settings里的第一个配置管道,也就是都会写入到my_meiju_jianjie.txt文本文件中。

因为setting.py中的都是全局属性的,scrapy有多个spider的时候就要用custom_setting配置。见方法三。

2.第二,可以在 pipeline 里判断是哪个爬虫的结果

settings里配置:

在pipeline文件里编写类MysipiderPipeline:

scrapy爬虫框架多个spider指定pipeline_第3张图片

根据不同的爬虫名字,处理不同的逻辑,很完美,可以使用。

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爬虫框架多个spider指定pipeline_第4张图片

我的爬虫内的设置:

film:

scrapy爬虫框架多个spider指定pipeline_第5张图片

meiju:

scrapy爬虫框架多个spider指定pipeline_第6张图片

因为要对应找到每个爬虫指定的管道,所以settings里也要进行管道配置:

scrapy爬虫框架多个spider指定pipeline_第7张图片

对应管道文件:

scrapy爬虫框架多个spider指定pipeline_第8张图片

亲测完美指定配置的通道~

总结:

如果你的scrapy是1.1以上版本,推荐使用第三种方法,简介明了。如果是更低版本,推荐使用第二种方法,多点判断也未尝不可~

 

 

 

 

你可能感兴趣的:(scrapy)