利用item pipeline可以實現將數據存入數據庫的操作,可以創建一個關於數據庫的item pipeline
需要在類屬性中定義兩個常量
DB_URL:數據庫的URL地址
DB_NAME:數據庫的名字
在Spider爬取的整個過程中,數據庫的連接和關閉操作只需要進行一次就可以,應該在開始處理之前就要連接數據庫,並在處理完所有數據之后就關閉數據庫。所以需要在open_spider和close_spider中定義數據庫的連接和關閉操作
在process_item中實現MongoDB的寫入操作,使用self.db和spider.name獲得一個集合,然后就是將數據插入到這個集合中,集合對象的insert_one插入的是一個字典對象,不能傳入item對象,所以在調用之前要對這個item對象進行判斷,如果是item對象就要轉成字典
如果要是想通過配置文件來進行配:
增加了類方法from_crawler(cls, cralwer),代替了在類屬性中定義的DB_URL,DB_NAME
如果是一個item pipeline定一個from_crawler方法,scrapy就會調用這個方法來創建item pipeline對象。這個方法有兩個參數
cls
item pipeline類的對象,這里指的是當前這個item pipeline對象
crawler
Crawler是scrapy中的一個核心的對象,可以通過crawler的settings屬性訪問配置文件
在from_crawler中,讀取配置文件中的MONGO_DB_URL和MONGO_DB_NAME(不存在使用默認值),賦值給cls的屬性,也就是當前item pipeline的對象
其它的讀取關閉沒有發生任何的改變,讀取關閉都是正常的操作