json模块是python内置模块,无需安装。用于json格式的数据处理,json字符串与json对象相互转换。
1 使用
import json
json.loads(str)
json.dumps(json)
2 解析
-
将json字符串转为json对象:json.loads(str)
-
将json对象转为json字符串:json.dumps(json,ensure_ascii=False,indent=2)
- ensure_ascii参数设置为false,保存到文件中时就不会把中文转为ascii码
- indent参数可以将其格式化,添加缩进
-
json.dumps可以将python字典转为json字符串
-
通常返回json数据的情景
- 通过调用API
- 将请求页面转换为手机版,查看请求链接和返回数据情况
- 转包app,分析数据
3 示例
import requests
import json
def movie_json():
url='https://movie.douban.com/j/search_subjects?type=movie&tag=%E6%AC%A7%E7%BE%8E&sort=recommend&page_limit=20&page_start=0'
header={
"User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1",
"Referer":"https://movie.douban.com/explore"
}
res=requests.get(url,headers=header)
print(res.content.decode())
print(type(res.content.decode()))
json_result=json.loads(res.content.decode())#json字符串对象化
print(type(json_result))
print(json_result['subjects'])
for movie in json_result['subjects']:
print("{}:{}".format(movie['title'],movie['url']))
with open('movie.json','w',encoding='utf-8') as f:
f.write(json.dumps(json_result,ensure_ascii=False,indent=2))#json字符串对象化
movie_json()