在上一個課程爬蟲課程(九)|Scrapy中items設(shè)計及如何把item傳給Item Pipeline 中,我們知道了怎么把Item的值傳給Pipeline管道,那么這篇文章我們就來介紹下怎么通過Pipeline把數(shù)據(jù)保存起來。
一、通過Pipeline把數(shù)據(jù)保存到Json文件
我使用的方法是調(diào)用scrapy提供的json export導(dǎo)出json文件,實際上scrapy.exporters提供了導(dǎo)出多個文件的方法,當(dāng)我們?nèi)xporters.py源碼查看是,我們發(fā)現(xiàn)它提供了8中導(dǎo)出文件的方式,如下圖,我們這里只舉例保存json格式。

第一步,先到Pipeline文件編寫一個保存json文件的Pipeline,如下圖片:

第二步,把這個DataSubmitJsonFilePipeline配置到settings中,如下圖:

第三步,執(zhí)行douban_book爬蟲。

最后,生成了doubanBook.json文件(默認(rèn)格式是一行,我使用JSON Parser進行了格式化)。

二、通過Pipeline把數(shù)據(jù)保存到MYSQL數(shù)據(jù)庫
第一步,先創(chuàng)建一個數(shù)據(jù)庫spider_db,新建一個表tb_douban_book,并把對應(yīng)的數(shù)據(jù)表字段增加上去,如下圖,ps:如果有對mysql不了解的,可以留言告訴我,我再決定要不要寫一篇文章來介紹下mysql的使用。

第二步,編寫一個插入數(shù)據(jù)庫數(shù)據(jù)的Pipeline,如下圖:

第三步,把這個DataSubmitMysqlPipeline配置到settings中,如下圖:

最后,執(zhí)行douban_book爬蟲,查看數(shù)據(jù)庫的結(jié)果,所有的數(shù)據(jù)都成功插入到mysql數(shù)據(jù)表中。

三、對上面數(shù)據(jù)插入MYSQL數(shù)據(jù)庫的說明
我們知道上面的方法是通過同步的方式把Item中的數(shù)據(jù)插入到MYSQL數(shù)據(jù)庫中,然后在實際應(yīng)用中,為了能夠更快速度地響應(yīng)數(shù)據(jù)插入的請求,我們都是采用異步的方式把數(shù)據(jù)插入MYSQL數(shù)據(jù)庫。
關(guān)于使用數(shù)據(jù)庫連接池和異步的方式插入數(shù)據(jù)庫的使用,我們會在后面的課程中講解。