当前位置:首页 > 编程笔记 > 正文
已解决

JsonPath详解

来自网友在路上 136836提问 提问时间:2023-09-23 06:53:59阅读次数: 36

最佳答案 问答题库368位专家为你答疑解惑

JsonPath

简介
JsonPath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具

文档
http://goessner.net/articles/JsonPath


安装

pip install jsonpath



使用
注意:这里的json_data为python数据,如列表,字典

data = jsonpath.jsonpath(json_data, 匹配规则)

语法

路径操作符
$  根对象
.  选择当前层级的属性或数组元素
.. 选择所有符合条件的条件
*  通配符,匹配任意属性或数组元素

其余
@    现行节点
n/a    取父节点,Jsonpath未支持
n/a    根据属性访问,Json不支持,因为Json是个Key-value递归结构,不需要。
[,]    支持迭代器中做多选。
?()    支持过滤操作.
()    支持表达式计算
n/a    分组,JsonPath不支持

基础示例

import jsonpathjson_dict_data = {"name": "John","age": 30,"cities": ["New York", "London"],"scores": {"math": 90,"english": 85,"science": 95},"isNullValue": None
}# 提取根对象下的 name 属性值
result_name = jsonpath.jsonpath(json_dict_data, "$.name")
print(result_name)# 提取根对象下 cities 数组的第一个元素
result = jsonpath.jsonpath(json_dict_data, "$.cities[0]")
print(result)# 提取根对象下 scores 对象的math属性值
result = jsonpath.jsonpath(json_dict_data, "$.scores.math")
print(result)

爬虫示例【urllib版】

import jsonimport jsonpath
from urllib.request import Request, urlopen
from fake_useragent import UserAgentdef cra1_1():url = 'http://xxx:8031/front/website/findAllTypes'headers = {'User-Agent': UserAgent().chrome}requests = Request(url, headers=headers)resp = urlopen(requests)result = json.loads(resp.read().decode())data1 = jsonpath.jsonpath(result, '$.code')print(data1)if __name__ == '__main__':cra1_1()

爬虫示例【requests版】

import jsonpath
from fake_useragent import UserAgent
import requestsdef cra1_1():url = 'http://xxx:8031/front/website/findAllTypes'headers = {'User-Agent': UserAgent().chrome}resp = requests.get(url, headers=headers)result = resp.json()code = jsonpath.jsonpath(result, '$.code')print(code)if __name__ == '__main__':cra1_1()

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"JsonPath详解":http://eshow365.cn/6-11966-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!