zoukankan      html  css  js  c++  java
  • 爬虫1.3-数据存储

    爬虫-数据存储

    1. JSON文件

    1.1 JSON数据格式

    json是一种轻量级数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据,简洁清晰,适合前端和后端数据交换

    JSON数据格式
    1 对象(字典) 使用花括号{}
    2 数组(数组) 使用方括号[]
    3 整形、浮点型、布尔型、null型
    4 字符串类型(字符串必须要用双引号,不能用单引号)
    多个数据之间用逗号分开
    json本质上就是一个字符串 python中只有基本数据类型才能转换成JSON格式,int float str list dict tuple

    1.2 写入

    写入方法一

    persons = [{xxx}, {xxxxx}] 
    json_str = json.dumps(persons) # 此时列表之间被转换成json标准格式(字符串类型),然后一个文件写入就行了
    fp.write(json_str)
    

    写入方法二

    with open('xx.json', 'w', enconding='utf-8') as fp:
      json.dump(persons, fp, ensure_asciii=False)   
    # 涉及到中文字符时这里传入三个参数,第一个就是包含大量字典的列表,第二个是文件指针,第三个是将json函数默认转换ascii码关闭    另外文件写入时也要使用utf-8格式(enconding='utf-8')
    

    1.3 读取json

    json_str = '[{"username": "laowang", "age": 18, "country": "china"}, {"username": "laoli", "age": 11, "country": "china"}]'
    persons = json.loads(json_str)  这里persons通过loads函数变成了一个对象,然后下方对其进行操作即可
    for i in persons:
        print(i)    
    
    with open('person.json', 'r', encoding='utf-8') as fp:
    	 persons = json.load(fp)     这时persons通过load函数变成了一个list类的对象,然后可以进行操作了
         for i in persons:
             print(i)
    

    dumpdumps loadloads 有s 则与字符串有关 没有s则与文件有关

    2. CSV文件

    2.1 csv数据格式

    CSV文件不是一个特定的文件格式,泛指具有以下特征的任何文件:
    1 纯文本,使用某个字符集,如utf-8, unicode, ascii, gbk等
    2 由记录组成,典型的是每行一条记录
    3 每条记录被分隔符分割为字段 典型的分隔符有逗号 分号 制表符
    4 每条记录都有同样的文本字段 如 姓名 年龄 身高 体重 每条记录都要有这四个字段

    2.2 写入

    CSV文件写入方法一:
    headers = ['username', 'age', 'height']       
    data = [('张三', 18, 160),('lisi', 20, 213)]
    with open('classroom.csv', 'w', encoding='utf-8', newline='') as fp:   
        #这里的newlien参数是为了避免写入后又多余的换行
        writer = csv.writer(fp)
        writer.writerow(headers)
    
    CSV文件写入方法二: 字典直接写入
    with open('classroom.csv', 'w', encoding='utf-8', newline='') as fp:
        writer = csv.DictWriter(fp, headers)    # 这里直接使用DictWriter函数
        writer.writerow(data)    # writerow每次只写入一条
    
    with open('classroom.csv', 'w', encoding='utf-8', newline='') as fp:
        writer = csv.DictWriter(fp, headers)  # 这里直接使用DictWriter函数
        writer.writeheader()   # 这里必须先调用写入头部函数,否则没有头部
        writer.writerows(data)  # 多条数据,直接使用writerows全部写入即可
    

    3. mysql数据库数据存入

    import pymysql
    db = pymysql.connect(
        host='47.107.110.xx',
        user='xxx',
        password='xxx',
        database='testdb',  # 数据库名
        port=3306
    )
    
    这里要理解,一个数据库服务器可以有多个数据库,所以要选择某个数据库进行操作
    
    新建表格的第一个字段可以设置为自动增长,可以理解为id
    sql = """
    insert into user(id,username,age,password) values(null,%s,%s,%s)
    """  
    # 这里使用%s是因为数据库在处理时都先按照字符串的
    # null是id  它自动增长可以不用填写
    username = 'laowang'
    age = 88
    password = '123456'   # 这样就可以自己灵活施展了
    cursor = db.cursor()   # cursor是创建一个新的游标,方便执行语句
    cursor.execute(sql, (username, age, password))  # 这里要传入一个元组
    db.commit()  # 必须使用commit提交后, 数据库的数据才会改变
    db.close()
    
    查询数据:
    fetchone() # 返回一条数据
    fetchall() # 接收全部的返回结果
    fetchmany(size) # 获取定条数的数据
    使用查询语句后,要使用上述三条语句才能获得结果,
    result = cursor.fetchone() # 获得一条数据(元组形式)  
    result = cursor.fetchall() # 获得所有返回的数据((xxx,xxxx,xxx), (yyy,yyyy,yyy)) 
    fetmany(size) # 得到的数据形式与fetchall类似
    
    删除数据:
    使用sql = """delete from table where id=1;"""  
    然后cursor.execute(sql)   
    db.commit()
    # 这里删除时只能删除一整条记录,插入,删除,更新等数据修改操作都需要使用.commit()函数
    
    更新数据
    sql = """update table set username='xxx' where id=1;""" 这里sql语句需要指明表 字段 标识
    如果不加id=1   就会把整个表的所有记录中的usernam字段都更新为xxx
    
    

    作者:bitterz
    本文版权归作者和博客园所有,欢迎转载,转载请标明出处。
    如果您觉得本篇博文对您有所收获,请点击右下角的 [推荐],谢谢!
  • 相关阅读:
    Atitit.随时间变色特效 ---包厢管理系统的规划
    Atitit.request http乱码的设计防止 检测与解决最近实践p825 attilax总结.doc
    Atitit.request http乱码的设计防止 检测与解决最近实践p825 attilax总结.doc
    atitit.薄伽梵歌overview  attilax 读后感
    Atitit。 《吠陀》 《梨俱吠陀》overview 经读后感  是印度上古时期一些文献的总称
    Atitit。 《吠陀》 《梨俱吠陀》overview 经读后感  是印度上古时期一些文献的总称
    atitit.薄伽梵歌overview  attilax 读后感
    Atitit 《摩奴法典》overivew 读后感 不是由国王 颁布的,而是 僧侣编制
    Atitit 《摩奴法典》overivew 读后感 不是由国王 颁布的,而是 僧侣编制
    Atitit.执行cli cmd的原理与调试
  • 原文地址:https://www.cnblogs.com/bitterz/p/10195056.html
Copyright © 2011-2022 走看看