python3爬虫学习之数据存储JSON

JSON,全称为JavaScript Object Notation,也就是JavaScript对象标记。它通过对象和数组的组合来表示数据,构造简洁但是结构化非常高,是一种轻量级的数据交换格式。另,推个网站:

json.cn

我们将了解到四个方法:dumps,dump,load,loads

所有代码基于此

import json

user = [
    {
        'name' : '张三',
        'age' : 19,
        'password' : 'abc'
    },
{
        'name' : '李四',
        'age' : 19,
        'password' : 'qwe'
    }
]

我们应该注意到,json的对象是用双引号来包围,这里用单引号不影响是因为我们首先进行的是dump和dumps操作,如果是load和laods操作,解释器会报错,json.cn也会报错

python3爬虫学习之数据存储JSON

一:dumps方法,将python对象转化为json类型

json_str = json.dumps(user , ensure_ascii=False)
with open ("json_demo.json", "w" , encoding="utf-8") as fp:
    fp.write(json_str)

python3爬虫学习之数据存储JSON

如果出现中文乱码,请注意在这里应该

ensure_ascii=False

且指定编码为utf-8

二:dump方法

with open ("json_demo1.json" , "w" , encoding="utf-8") as fp: #编码避免中文乱码
    json.dump(user ,fp , ensure_ascii=False)

可以对比两种方法的区别

三:load方法:将文件中的字符串转化为python对象

注意,我们在前面已经生成了json_dome.json,所以用load和loads方法不是获取第一段代码中的字符串,因此不会报错

with open("json_demo.json" ,"r" ,encoding="utf-8") as fp:
    s = json.load(fp)
    print(s)

python3爬虫学习之数据存储JSON

四:loads方法:

json_str = json.dumps(user , ensure_ascii=False)
s = json.loads(json_str)
for a in s:
    print(a)

python3爬虫学习之数据存储JSON