美文网首页Python爬虫程序员爬虫专题
爬虫课程(十)|豆瓣:通过Pipeline保存数据到json文件

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

作者: 小怪聊职场 | 来源:发表于2017-11-09 23:30 被阅读991次

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

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

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

    exporters支持导出8中不同格式的文件

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

    编写Pipeline

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

    settings

    第三步,执行douban_book爬虫。

    执行

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

    doubanBook.json

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

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

    新建tb_douban_book表

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

    插入数据库的Pipeline

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

    配置settings

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

    数据入库

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

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

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

    相关文章

      网友评论

      • 火车声隆隆:pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' ([WinError 10061] 由于目标计算机积极拒绝,无法连接。)")
        存在这个我问题,请问是什么原因呢?
        pipelines.py 如下
        import pymysql
        import pymysql.cursors
        #设置字符集,防止编码参数出错
        import sys
        import imp
        imp.reload(sys)

        # 提交数据到mysql
        class DataSubmitMySQLPipeline(object):
        def __init__(self):
        # 填写数据库用户名、数据库名、数据库用户密码、数据库url
        self.conn = pymysql.connect(user='root', db='spider_db', passwd='root',
        host='127.0.0.1',charset="utf8", use_unicode=True)

        self.cursor = self.conn.cursor()

        def process_item(self, item, spider):
        insert_sql = """
        insert into a_test(title, url)
        values(%s,%s)
        """
        self.cursor.execute(insert_sql, (item["title"], item["url"]))
        self.conn.commit()
        火车声隆隆:@小怪聊职场 可能是这一步弄错了
        """第一步,先创建一个数据库spider_db,新建一个表tb_douban_book,并把对应的数据表字段增加上去,如下图,"""
        python3 mysql数据库具体怎么设置能讲讲吗
        我一直在尝试pymysql,但一直出错
        小怪聊职场:@火车声隆隆 没连上数据库吧
      • 小怪聊职场:增加把微博的信息保存到MySQL数据库,https://github.com/huangtao1208/scrapy_spider
      • fcb7b1dcda45:能介绍下在爬虫中,MySQL数据库的使用吗?
        小怪聊职场:是mysql的单独使用吗
      • 纯天然_a300:楼主,我有点好奇为什么setting配置里面启动的管道写的是tutoiral.piplines呀?:fearful: :fearful:
        小怪聊职场:tutoiral 是项目名:smile:

      本文标题:爬虫课程(十)|豆瓣:通过Pipeline保存数据到json文件

      本文链接:https://www.haomeiwen.com/subject/gcismxtx.html