在scrapy中將數據保存到mongodb中

利用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的對象

  其它的讀取關閉沒有發生任何的改變,讀取關閉都是正常的操作

 

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