当前位置:网站首页>【爬虫】数据提取之JSONpath
【爬虫】数据提取之JSONpath
2022-07-04 22:46:00 【语音不识别】
安装
pip install jsonpath
# 或者
pip install jsonpath -i https://pypi.tuna.tsinghua.edu.cn/simple
使用
from jsonpath import jsonpath
ret = jsonpath(json_dict, 'jsonpath语法规则字符串')
jsonpath语法规则
JSONPath | 描述 |
---|---|
$ | 表示根元素 |
@ | 当前元素 |
. or[] | 子元素 |
n/a | 父元素,jsonpath未支持 |
.. | 不管位置,选择符合条件的元素 |
* | 匹配所有元素节点 |
n/a | 根据属性访问,jsonpath未支持,因为json是一个key:value的递归结果,不需要属性访问。 |
[] | 迭代器标示,可以在里面做简单的迭代操作,如数组下标、根据内容选值等。 |
[,] | 支持迭代器做多选 |
?() | 支持过滤操作 |
() | 支持表达式计算 |
n/a | 分组,jsonpath未支持 |
举例
from jsonpath import jsonpath
book_dict = {
"store": {
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{
"category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{
"category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
}
}
res = jsonpath(book_dict, '$.store.book[*].author ')
print(res)
#索引从0开始 [索引]
res = jsonpath(book_dict , '$.store.book[0]')
print(res)
#根据条件筛选 ?(@.字段>数值)
# .. 直达选中字段
res = jsonpath(book_dict, '$..book[?(@.price>10)]')
print(res)
JSONPath | 描述 |
---|---|
$.store.book[*].author | 获取store中所有的book的作者 |
$..author | 获取所有的作者 |
$.store.* | 获取store下的所有的元素 |
$.store..price | 获取store中的所有的图书的价格 |
$..book[2] | 获取第三本书 |
$..book[(@.length-1)] | $..book[-1:] | 获取最后一本书 |
$..book[0,1]| $..book[:2] | 获取前两本书 |
$..book[?(@.isbn)] | 获取有isbn的所有书 |
$..book[?(@.price>10)] | 获取价格大于10的所有图书 |
$..* | 获取所有的数据 |
边栏推荐
- On-off and on-off of quality system construction
- Redis入门完整教程:慢查询分析
- Talk about Middleware
- Attack and defense world misc advanced zone 2017_ Dating_ in_ Singapore
- A complete tutorial for getting started with redis: redis shell
- Redis入门完整教程:键管理
- 微信小程序显示样式知识点总结
- A complete tutorial for getting started with redis: understanding and using APIs
- 【ODX Studio编辑PDX】-0.2-如何对比Compare两个PDX/ODX文件
- A complete tutorial for getting started with redis: redis usage scenarios
猜你喜欢
MySQL Architecture - user rights and management
Attack and defense world misc advanced grace-50
Redis:Redis消息的发布与订阅(了解)
Redis入门完整教程:初识Redis
Redis入门完整教程:键管理
Google Earth engine (GEE) - tasks upgrade enables run all to download all images in task types with one click
智力考验看成语猜古诗句微信小程序源码
Qt个人学习总结
Redis getting started complete tutorial: Geo
How to send a reliable request before closing the page
随机推荐
Redis入门完整教程:键管理
Duplicate ADMAS part name
剑指Offer 68 - II. 二叉树的最近公共祖先
ffmpeg快速剪辑
D3.js+Three. JS data visualization 3D Earth JS special effect
Complete tutorial for getting started with redis: bitmaps
LabVIEW中比较两个VI
【剑指offer】1-5题
[ODX studio edit PDX] - 0.2-how to compare two pdx/odx files of compare
cout/cerr/clog的区别
Co create a collaborative ecosystem of software and hardware: the "Joint submission" of graphcore IPU and Baidu PaddlePaddle appeared in mlperf
Attack and defense world misc advanced area can_ has_ stdio?
Google Earth engine (GEE) -- take modis/006/mcd19a2 as an example to batch download the daily mean, maximum, minimum, standard deviation, statistical analysis of variance and CSV download of daily AOD
How to send a reliable request before closing the page
How can enterprises cross the digital divide? In cloud native 2.0
金融市场,资产管理与投资基金
Redis入门完整教程:初识Redis
Unity Xiuxian mobile game | Lua dynamic sliding function (specific implementation of three source codes)
企业如何跨越数字化鸿沟?尽在云原生2.0
Qt个人学习总结