解決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以上版本,推薦使用第三種方法,簡介明瞭。如果是更低版本,推薦使用第二種方法,多點判斷也未嘗不可

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