json
基本使用
- json.dumps
将 obj 序列化为 JSON 格式的 str - json.loads
将 s (一个包含 JSON 文档的 str, bytes 或 bytearray 实例) 反序列化为 Python 对象
import json
str1 = '{"name":"张三"}'
# 转换成json格式
obj = json.loads(str1)
print(obj) # {'name': '张三'}
print(type(obj)) # <class 'dict'>
# 转成字符串
str2 = json.dumps(obj)
print(str2) # {"name": "\u5f20\u4e09"}
# 不进行ASC转换
str3 = json.dumps(obj, ensure_ascii=False)
print(str3) # {"name": "张三"}
- json.dump
将 obj 序列化为 JSON 格式化流形式的 fp, 相当于保存文件 - json.load
将 fp (一个支持 .read() 并包含一个 JSON 文档的 text file 或者 binary file) 反序列化为一个 Python 对象
# 写入文件
json.dump(obj, open('data.txt', 'w', encoding='utf-8'), ensure_ascii=False)
# 读取文件
data = json.load(open('data.txt', encoding='utf-8'))
print(data) # {'name': '张三'}
JsonPath
- JsonPath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本(JAVA,Python,php等等)
- JsonPath对于JSO来说,相当于Xpath对于Xml
- 安装方法: pip install jsonpath
- 官方doc
案例
需求 : 解析页面https://www.lagou.com/lbs/getAllCitySearchLabels.json 提取城市和编码
from jsonpath import jsonpath
import requests
url = 'https://www.lagou.com/lbs/getAllCitySearchLabels.json'
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36'
}
res = requests.get(url, headers=headers)
names = jsonpath(res.json(), '$..name')
codes = jsonpath(res.json(), '$..code')
data = {}
for name,code in zip(names,codes):
data[name] = code
print(data)