現在來看一個問題:當存在多個爬蟲的時候如何指定對應的管道呢?
這裏定義了兩個爬蟲: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以上版本,推薦使用第三種方法,簡介明瞭。如果是更低版本,推薦使用第二種方法,多點判斷也未嘗不可