安装:python -m pip install jsonpath
Json结构清晰,可读性高,复杂度低,非常容易匹配,下表中对应了XPath的用法。
| Xpath | JSONPath | 描述 |
|---|---|---|
| / | $ | 跟节点 |
| . | @ | 现行节点 |
| / | . or [] | 取子节点 |
| .. | n/a | 就是不管位置,选择所有符合条件的条件 |
| * | * | 匹配所有元素节点 |
| [] | [] | 迭代器标示(可以在里面做简单的迭代操作,如数组下标,根据内容选值等) |
| | | [,] | 支持迭代器中做多选 |
| [] | ?() | 支持过滤操作 |
| n/a | () | 支持表达式计算 |
| () | n/a | 分组,JsonPath不支持 |


获取当前json数据中某节点数据:
jsonpath.jsonpath(html,’$..read_count’)


获取根节点下某节点数据:
jsonpath.jsonpath(html,’$.msg’)


获取子节点下第1、2个数据
jsonpath.jsonpath(html,’$.data.post_author.post_list[0:2]’)


按条件筛选节点下数据:
jsonpath.jsonpath(html,’$..data.post_author.post_list[?(@.read_count>10)]’)


import requests,jsonpath
#. or [] 取子节点
#.. 不管位置,选择所有符合条件的节点
shop=requests.get(url="").json()
#商店里所有书籍的作者
author_list=jsonpath.jsonpath(shop,'$.store.book[*].author')
#返回所有的作者
author_list2=jsonpath.jsonpath(shop,'$..author')
#商店里的所有东西
category_dx=jsonpath.jsonpath(shop,'$.store.*')
#商店里一切的价格
store_price_list=jsonpath.jsonpath(shop,'$.store..price')
#第三本书
book_3=jsonpath.jsonpath(shop,'$..book[2]')
#最后一本书
book_last=jsonpath.jsonpath(shop,'$..book[-1]')
num=len(jsonpath.jsonpath(shop,'$..book'))-1
book_last=jsonpath.jsonpath(shop,f'$..book[{num}]') #取值
#前两本书
book_12=jsonpath.jsonpath(shop,f'$..book[0,1]')
#过滤所有便宜10以上的书籍
book_lg10=jsonpath.jsonpath(shop,'$..book[?(@.price<10)]')
#使用isbn number过滤所有书籍
book_lg10=jsonpath.jsonpath(shop,'$..book[?(@.isbn)]')
# !/usr/bin/env python
# -*- coding:utf-8 -*-
import json
import jsonpath
import requests
url='https://www.lagou.com/lbs/getAllCitySearchLabels.json'
resp=requests.get(url)
city_json=resp.text
# json字符串转换为python字典对象
city_dict=json.loads(city_json)
# 使用jsonpath匹配
# 获取根节点下的所有name节点的值
names=jsonpath.jsonpath(city_dict,expr='$..name')
print(names)
# 根节点下的message节点的值
message=jsonpath.jsonpath(city_dict,expr='$.message')
print(message)
# D节点下的前3个
D=jsonpath.jsonpath(city_dict,expr='$.content.data.allCitySearchLabels.D[0:3]')
print(D)
# D节点下的第2个和第4个
D=jsonpath.jsonpath(city_dict,expr='$.content.data.allCitySearchLabels.D[1,3]')
print(D)
其他还有jsonpath-rw、jsonpath-ng等

![[python] AES-GCM加解密函数-微慑信息网-VulSee.com](https://vulsee.com/wp-content/uploads/2024/12/4a3de68ff9eca0a01bae73a7470170f3.png)


![[python]文本处理-微慑信息网-VulSee.com](https://vulsee.com/wp-content/uploads/2023/12/e036ea90943d8195df3aa3e2ad3db122.png)
![[python] 输出颜色 - colorama / termcolor [补充]-微慑信息网-VulSee.com](https://vulsee.com/wp-content/uploads/2023/10/3ce37224d46fae3bee75b135ba129c77.png)
![[vulsee.com] 使用openpyxl 读取xlsx中的网址链接-微慑信息网-VulSee.com](https://vulsee.com/wp-content/uploads/2023/06/92d3798abeb4baabf03ebcf81d50e73e.png)








![[八卦] 王婷婷—揭秘一个大三女生的性爱录像-微慑信息网-VulSee.com](http://free.86hy.com/crack/pic/1.jpg)
![[随笔]今天国际警察节-微慑信息网-VulSee.com](http://photo.sohu.com/20041017/Img222528326.jpg)

青云网
