爬虫中的数据保存----json文件的保存

一.json数据的简介

目的: 将 Python 对象编码为 JSON 字符串,并将 JSON 字符串解码为 Python 对象。

json 模块提供了 API,将内存中的 Python 对象转换为 JSON 序列。JSON 具有以多种语言(尤其是JavaScript)实现的优点。它在 REST API 中 Web 服务端和客户端之间的通信被广泛应用,同时对于应用程序间通信需求也很有用。

1. json 的编码和解码

Python 的默认原生类型( str , int , float , list , tuple ,和 dict )。


import json
data = {
    
    
	'name': 'ACME',
	'shares': 100,
	'price': 542.23
}
json_str = json.dumps(data)
print(json_str)
print(type(json_str))

# 保存
with open('data.json', mode='w', encoding='utf-8') as f:
	f.write(json_str)

从无序的字典到有序的字符串,这个过程被称之为序列化。

1. 中文字符的问题


import json
data = {
    
    
	'name': '张三',
	'shares': 100,
	'price': 542.23
}
# 将字典序列化为json
json_str = json.dumps(data)
# 写入 json 数据
with open('data.json', mode='w', encoding='utf-8') as f:
f.write(json_str)

这时的输出:
# filename:data.json
{
    
    "name": "\u9752\u706f", "shares": 100, "price": 542.23}

解决办法:
# ensure_ascii=False  不使用默认的unicode编码
 json_str = json.dumps(data, ensure_ascii=False)

2. 数据的读取


# 读取 json 数据
with open('data.json', 'r', encoding='utf-8') as f:
# 反序列化
	data = json.load(f)
# 打印数据
print(data)
print(data['name'])

3. 格式化输出

JSON 的结果是更易于阅读的。 dumps() 函数接受几个参数以使输出更易读结果。


import json
data = {
    
    'a': 'A''b': (24)'c': 3.0}
print('DATA:'repr(data)) # DATA: {'a': 'A', 'b': (2, 4), 'c': 3.0}
unsorted = json.dumps(data)
print('JSON:', json.dumps(data)) # JSON: {"a": "A", "b": [2, 4], "c": 3.0}

解释:

编码,然后重新解码可能不会给出完全相同类型的对象。
特别是,元组成为了列表。
JSON跟Python中的字典其实是一样一样的,事实上JSON的数据类型和Python的数据类型是很容易找到
对应关系的,
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_74459049/article/details/130307215