scrapy爬虫框架多个spider指定pipeline

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

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

这里定义了两个爬虫:filmmeiju

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

settings里针对item_pipelines的设置如下:

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

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

例:

对应管道文件:

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

如果大家有解决方案,欢迎交流!

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

猜你喜欢

转载自blog.csdn.net/harry5508/article/details/86486777