快速做网站用什么软件,柳州网站建设推荐,零售电商平台有哪些,免费发布网站JsonPath介绍使用
JsonPath是一种轻量级的查询库#xff0c;可以从JSON文本数据中进行筛选和提取操作。有点类似于使用XPath在HTML数据中提取数据的功能。JsonPath 也可以通过使用类似于 XPath 的表达式来访问 JSON对象中的属性和元素#xff0c;并支持通配符、筛选器和函数…JsonPath介绍使用
JsonPath是一种轻量级的查询库可以从JSON文本数据中进行筛选和提取操作。有点类似于使用XPath在HTML数据中提取数据的功能。JsonPath 也可以通过使用类似于 XPath 的表达式来访问 JSON对象中的属性和元素并支持通配符、筛选器和函数等操作。 安装命令
pip install jsonpath官方文档
http://goessner.net/articles/JsonPathJsonpath基本语法
语法命令语法描述$json数据的根节点json数据的当前节点.或[]获取当前节点的子节点…选取任意位置下符合条件的数据用于跨界点获取数据*获取当前节点下的所有元素[]迭代器标示用于选取数组下标[,]迭代器中可以输入多个索引值来选择数据?()可以进行过滤操作()支持表达式计算
使用jsonpath筛选豆瓣的jjson数据
import requests
from jsonpath import jsonpath
# 1、用户代理的构造
headers {
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36
}
# 2、确认目标url
url https://movie.douban.com/j/chart/top_list?
type24interval_id100%3A90actionstart0limit20
# 3、发送网络请求获取响应对象
response requests.get(url, headersheaders)
# 4、将响应的数据以json格式展示
json_data response.json()
# print(json_data) 字典数据存放在列表中
# 5、对列表中的数据进行遍历
for json in json_data:print()# 6、对json数据进行筛选# 筛选出title信息,并取出值title jsonpath(json, $..title)[0]print(电影名称, title)# 筛选电影评分score jsonpath(json, $..score)[0]print(电影评分, score)# 筛选电影标签列表数据types jsonpath(json, $..types[*]) # 全部数据# types jsonpath(json, $..types[0,1]) # 范围数据# types jsonpath(json, $..types[(.length-1)])[0] # 最后一个数据print(电影标签, types)# 筛选电影演员列表数据actors jsonpath(json, $..actors.*)print(电影演员, actors)print()
# 从所有电影中筛选出演员人数大于40的电影数据
movie_list jsonpath(json_data, $..?(.actor_count40))
print(电影人数大于40的电影:, movie_list)Json数据格式转换
json数据的格式转换是使用json模块中的loads和dumps方法来进行实现。 Json字符串 json.loads() Python字典类型 Python 字典类型 json.dumps() Json 字符串
测试代码
import json
# 1、定义json数据json数据本质上是一个字符串
# 这里建议先格式化json字符串的内容后运用spidetools再运行
movie_data {rating:
[9.6,50],rank:1,cover_url:https://img2.doubanio.com\/view\/photo\/s_rat
io_poster\/public\/p2578474613.webp,is_playable:true,id:1292063,types:
[剧情,喜剧,爱情,战争],regions:[意大利],title:美丽人
生,url:https:\/\/movie.douban.com\/subject\/1292063\/,release_date:2020-
01-03,actor_count:29,vote_count:1336248,score:9.6,actors:[罗伯托·贝尼
尼,尼可莱塔·布拉斯基,乔治·坎塔里尼,朱斯蒂诺·杜拉诺,赛尔乔·比尼·布斯特里克,玛丽萨·帕
雷德斯,霍斯特·布赫霍尔茨,利迪娅·阿方西,朱利亚娜·洛约迪切,亚美利哥·丰塔尼,彼得·德·席
尔瓦,弗朗西斯·古佐,拉法埃拉·莱博罗尼,克劳迪奥·阿方西,吉尔·巴罗尼,马西莫·比安
奇,恩尼奥·孔萨尔维,吉安卡尔洛·科森蒂诺,阿伦·克雷格,汉尼斯·赫尔曼,弗兰科·梅斯科利
尼,安东尼奥·普雷斯特,吉娜·诺维勒,理查德·塞梅尔,安德烈提多娜,迪尔克·范登贝格,奥梅
罗·安东努蒂,沈晓谦,张欣],is_watched:false}
# 2、将json转换为字典数据
dict_data json.loads(movie_data)
print(数据类型为, type(dict_data))
print(数据内容为, dict_data)
# 3、将字典转换为json数据中文会默认进行编码
json_data json.dumps(dict_data, ensure_asciiFalse)
print(数据类型为, type(json_data))
print(数据内容为, json_data)Json文件的读与写
json文件的读写与格式转换非常相似也是使用json模块中的load和dump方法来进行实现。
Json 文件 json.load() Python 字典类型 Python 字典类型 json.dump() Json 文件
PS 在对json文件进行读写时需要注意 load、loads 、dump、dumps的区分。其中带s的是用于转换格式的不带s的才是读写文件的。
测试代码
import json
import requests
# 1、用户代理的构造
headers {
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36
}
# 2、确认目标url
url https://movie.douban.com/j/chart/top_list?
type24interval_id100%3A90actionstart0limit20
# 3、发送网络请求获取响应对象
response requests.get(url, headersheaders)
# 4、将json字符串写入到文件中(设置中文不进行编码)
with open(movie_data.json, w, encodingutf-8) as file:json.dump(response.json(), file, ensure_asciiFalse)
# 5、读取json文件的字符串数据
with open(movie_data.json, r, encodingutf-8) as file:json_data json.load(file)
print(输出的格式为, type(json_data))
print(输出的内容为, json_data)