爬虫课程(十)|豆瓣:通过Pipeline保存数据到json文件和mysql数据库

在上一个课程爬虫课程(九)|Scrapy中items设计及如何把item传给Item Pipeline 中,我们知道了怎么把Item的值传给Pipeline管道,那么这篇文章我们就来介绍下怎么通过Pipeline把数据保存起来。

一、通过Pipeline把数据保存到Json文件

我使用的方法是调用scrapy提供的json export导出json文件,实际上scrapy.exporters提供了导出多个文件的方法,当我们去exporters.py源码查看是,我们发现它提供了8中导出文件的方式,如下图,我们这里只举例保存json格式。

《爬虫课程(十)|豆瓣:通过Pipeline保存数据到json文件和mysql数据库》 exporters支持导出8中不同格式的文件

第一步,先到Pipeline文件编写一个保存json文件的Pipeline,如下图片:

《爬虫课程(十)|豆瓣:通过Pipeline保存数据到json文件和mysql数据库》 编写Pipeline

第二步,把这个DataSubmitJsonFilePipeline配置到settings中,如下图:

《爬虫课程(十)|豆瓣:通过Pipeline保存数据到json文件和mysql数据库》 settings

第三步,执行douban_book爬虫。

《爬虫课程(十)|豆瓣:通过Pipeline保存数据到json文件和mysql数据库》 执行

最后,生成了doubanBook.json文件(默认格式是一行,我使用JSON Parser进行了格式化)。

《爬虫课程(十)|豆瓣:通过Pipeline保存数据到json文件和mysql数据库》 doubanBook.json

二、通过Pipeline把数据保存到MYSQL数据库

第一步,先创建一个数据库spider_db,新建一个表tb_douban_book,并把对应的数据表字段增加上去,如下图,ps:如果有对mysql不了解的,可以留言告诉我,我再决定要不要写一篇文章来介绍下mysql的使用。

《爬虫课程(十)|豆瓣:通过Pipeline保存数据到json文件和mysql数据库》 新建tb_douban_book表

第二步,编写一个插入数据库数据的Pipeline,如下图:

《爬虫课程(十)|豆瓣:通过Pipeline保存数据到json文件和mysql数据库》 插入数据库的Pipeline

第三步,把这个DataSubmitMysqlPipeline配置到settings中,如下图:

《爬虫课程(十)|豆瓣:通过Pipeline保存数据到json文件和mysql数据库》 配置settings

最后,执行douban_book爬虫,查看数据库的结果,所有的数据都成功插入到mysql数据表中。

《爬虫课程(十)|豆瓣:通过Pipeline保存数据到json文件和mysql数据库》 数据入库

三、对上面数据插入MYSQL数据库的说明

我们知道上面的方法是通过同步的方式把Item中的数据插入到MYSQL数据库中,然后在实际应用中,为了能够更快速度地响应数据插入的请求,我们都是采用异步的方式把数据插入MYSQL数据库。

关于使用数据库连接池和异步的方式插入数据库的使用,我们会在后面的课程中讲解。

点赞