在上一個(gè)課程爬蟲課程(九)|Scrapy中items設(shè)計(jì)及如何把item傳給Item Pipeline 中,我們知道了怎么把Item的值傳給Pipeline管道,那么這篇文章我們就來介紹下怎么通過Pipeline把數(shù)據(jù)保存起來。
一、通過Pipeline把數(shù)據(jù)保存到Json文件
我使用的方法是調(diào)用scrapy提供的json export導(dǎo)出json文件怎抛,實(shí)際上scrapy.exporters提供了導(dǎo)出多個(gè)文件的方法揍拆,當(dāng)我們?nèi)xporters.py源碼查看是拢操,我們發(fā)現(xiàn)它提供了8中導(dǎo)出文件的方式锦亦,如下圖,我們這里只舉例保存json格式令境。
第一步杠园,先到Pipeline文件編寫一個(gè)保存json文件的Pipeline,如下圖片:
第二步舔庶,把這個(gè)DataSubmitJsonFilePipeline配置到settings中抛蚁,如下圖:
第三步,執(zhí)行douban_book爬蟲惕橙。
最后瞧甩,生成了doubanBook.json文件(默認(rèn)格式是一行,我使用JSON Parser進(jìn)行了格式化)弥鹦。
二肚逸、通過Pipeline把數(shù)據(jù)保存到MYSQL數(shù)據(jù)庫
第一步,先創(chuàng)建一個(gè)數(shù)據(jù)庫spider_db彬坏,新建一個(gè)表tb_douban_book朦促,并把對(duì)應(yīng)的數(shù)據(jù)表字段增加上去,如下圖栓始,ps:如果有對(duì)mysql不了解的务冕,可以留言告訴我,我再?zèng)Q定要不要寫一篇文章來介紹下mysql的使用幻赚。
第二步禀忆,編寫一個(gè)插入數(shù)據(jù)庫數(shù)據(jù)的Pipeline,如下圖:
第三步落恼,把這個(gè)DataSubmitMysqlPipeline配置到settings中箩退,如下圖:
最后,執(zhí)行douban_book爬蟲佳谦,查看數(shù)據(jù)庫的結(jié)果乏德,所有的數(shù)據(jù)都成功插入到mysql數(shù)據(jù)表中。
三吠昭、對(duì)上面數(shù)據(jù)插入MYSQL數(shù)據(jù)庫的說明
我們知道上面的方法是通過同步的方式把Item中的數(shù)據(jù)插入到MYSQL數(shù)據(jù)庫中,然后在實(shí)際應(yīng)用中胧瓜,為了能夠更快速度地響應(yīng)數(shù)據(jù)插入的請(qǐng)求矢棚,我們都是采用異步的方式把數(shù)據(jù)插入MYSQL數(shù)據(jù)庫。
關(guān)于使用數(shù)據(jù)庫連接池和異步的方式插入數(shù)據(jù)庫的使用府喳,我們會(huì)在后面的課程中講解蒲肋。