Python json 数据提取 jsonpath 详解

您所在的位置:网站首页 手竿怎么用弹簧钩钓鲢鱼 Python json 数据提取 jsonpath 详解

Python json 数据提取 jsonpath 详解

#Python json 数据提取 jsonpath 详解| 来源: 网络整理| 查看: 265

一、JsonPath

     JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python, PHP 和 Java。也就是独立的可以配合多种语言进行匹配的目标值的一种类库,和jmeter中的jsonPath匹配方式很像(具体参考此文章:https://www.cnblogs.com/Zhan-W/p/10985816.html )。优点之一: 数据可以通过交互方式从客户端上的JSON结构提取,不需要特殊的脚本。

二、JsonPath特性 只能提取json格式的数据提取后的数据类型与原数据类型一致 三、 JsonPath安装

pip install jsonpath -i https://pypi.doubanio.com/simple

 四、 JsonPath 语法元素

  官方文档:JSONPath - XPath for JSON

过滤表达式 

  五、 JsonPath 使用 import requests import json import jsonpath if __name__ == '__main__': # 1.确认目标url 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/98.0.4758.102 Safari/537.36' } # 2.发送网络请求,获取响应对象 response_ = requests.get(url_, headers=headers_) #获取python格式,自动类型转换 py_data=response_.json() # json()这是一个方法 print(type(py_data),py_data) # $:根元素 #(1)获取所有城市名称 names=jsonpath.jsonpath(py_data,'$..name') print(len(names),names) # .or []:子元素 #(2)获取所有城市中按字母分类的第一个城市的所有信息 res=jsonpath.jsonpath(py_data,"$..allCitySearchLabels.*[:1]") print(len(res),res) # [, ]:支持迭代器中做多选,多个key用逗号隔开 #(3)获取A字母的城市名和父城市id res=jsonpath.jsonpath(py_data,"$..A.[name,parentId]") print(len(res),res) #(4)获取B字母的城市下的第0个和第16个城市信息 res=jsonpath.jsonpath(py_data,"$..B[0,16]") print(len(res),res) # [start:end:step]:数组分割操作,等同于切片, 遵循左闭右开原则 #(5)获取B字母的城市下的前2个城市信息 res=jsonpath.jsonpath(py_data,"$..B[:2]") print(len(res),res) # ?():应用过滤表示式 #(6)获取B字母的城市下的id编号大于850的信息 res=jsonpath.jsonpath(py_data,"$..B.[?(@.id>850)]") print(len(res),res) # == :等于 # (7)查询城市是福州的城市信息 res = jsonpath.jsonpath(py_data, "$..*[?(@.name=='福州')]") print(len(res), res) # in :所属符号 # (8)查询城市是杭州,北京,天津的城市信息 res = jsonpath.jsonpath(py_data, "$..*[?(@.name in ['杭州','北京','天津'])]") print(len(res), res) # (8)查询城市是杭州,北京,天津的code信息 res = jsonpath.jsonpath(py_data, "$..*[?(@.name in ['杭州','北京','天津'])].code") print(len(res), res) # not in :排除符号 # (9)查询城市不是杭州,北京,天津的城市信息 res = jsonpath.jsonpath(py_data, "$..*[?(@.name not in ['杭州','北京','天津'])]") print(len(res), res) # &&:逻辑AND,用于合并多个过滤器表达式 # (10)查询城市是杭州,并且ID是653的城市信息 res = jsonpath.jsonpath(py_data, "$..*[?(@.name =='杭州' && @.id==653)]") print(len(res), res) # || 逻辑OR,用于组合多个过滤器表达式 # (11)查询城市是杭州, 或者ID大于1000的城市信息 res = jsonpath.jsonpath(py_data, "$..*[?(@.name =='杭州' || @.id>1000)]") print(len(res), res)

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3