Scrapy中pipeline介紹以及多個爬蟲的pipeline的使用


1.從pipeline的字典形式可以看出來,pipeline可以有多個,而且確實pipeline能夠定義多個

    

2. 有多個爬蟲,pipeline是怎樣處理的呢?

    首先創建三個爬蟲 : 例如: 在一個scrapy的項目里面爬取三個網站: 今日頭條、新浪、豆瓣

     在cmd里面分別創建三個爬蟲:

    

然后打開pycharm查看:

                

  就會看見有三個爬蟲

(1)使用pipeline處理的第一個方式可以給item加上鍵和響應的值:     分別再相對的爬蟲py里面,的parse方法里面加上相應的鍵和值

 1 """對應的toutiao.py"""
 2 def parse(self, response):
 3     item = {}
 4     item["come_from"] = "toutiao"
 5     pass
 6  
 7 """對應的sina.py"""
 8 def parse(self, response):
 9     item = {}
10     item["come_from"] = "sina"
11     pass
12  
13 """對應的douban.py"""
14 def parse(self, response):
15     item = {}
16     item["come_from"] = "douban"
17     pass

然后pipelines.py  在 process_item方法里面可以對值進行相應的操作,分別進行判斷

1 class PipelinetestPipeline(object):
2     def process_item(self, item, spider):
3         if item["come_from"] == "toutiao":
4             pass
5         elif item["come_from"] == "sina":
6             pass
7         else:
8             pass
9         return item

也可以寫多個類的形式進行:

 1 class PipelinetestPipeline(object):
 2     def process_item(self, item, spider):
 3         if item["come_from"] == "toutiao":
 4             pass
 5         return item
 6  
 7  
 8 class PipelinetestPipeline2(object):
 9     def process_item(self, item, spider):
10         if item["come_from"] == "sina":
11             pass
12         return item
13  
14  
15 class PipelinetestPipeline3(object):
16     def process_item(self, item, spider):
17         if item["come_from"] == "douban":
18             pass

(2) 除了給item加上鍵和值,還有第二方式,  spider.name 來進行判斷,就不用給item加鍵和值

1 class PipelinetestPipeline(object):
2     def process_item(self, item, spider):
3         if spider.name == "toutiao":
4             pass
5         elif spider.name == "sina":
6             pass
7         else:
8             pass
9         return item

每個爬蟲的類里面都有對應的name屬性,也就是對應的每個爬蟲的名字,所以可以利用這個屬性來進行判斷  然后在pipeline里面進行相應的處理

3.  對有多個爬蟲時,pipeline通過上面的中方式進行處理,   一種方式是給item加上鍵和值,一種方式是里面name屬性  分別對值或者爬蟲的名字進行判斷,進而對數據進行處理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM