Python使用jsonpath-rw模块处理Json对象操作示例


Posted in Python onJuly 31, 2018

本文实例讲述了Python使用jsonpath-rw模块处理Json对象操作。分享给大家供大家参考,具体如下:

这两天在写一个爬虫,需要从网站返回的json数据提取一些有用的数据。

向url发起请求,返回的是response,在python3中,response.content是二进制bytes类型的,需要用decode()转成unicode的str类型

#如果用的requests发的请求
import json
response = requests.get(url,headers=self.headers)
response = response.content.decode()
response = json.loads(response) #转成json对象,在python里也就是dict类型
#如果用的scrapy.Request发的请求
import json
import scrapy
response = scrapy.Request(url,headers=self.headers)
response = response.text.decode()
response = json.loads(response) #转成json对象,在python里也就是dict类型

也就是说处理json对象其实可以和处理dict一样,那就要用到很多中括号,而且取值也只能取单个精确的值。一点都不灵活

用过xpath和css选择器的人当然会觉得这种方法很笨重。

而恰巧json也有类型的选择器:jsonpath

但是需要注意的是,python的库并不是jsonpath(还真有这个库,但是不知如何使用,官方也没有给出python的使用文档),真正在python中可以使用的库是:jsonpath-rw

官方文档:https://pypi.python.org/pypi/jsonpath-rw (更多jsonpath的语法请点击链接)

下面只列下简单常用的基本方法

使用示例

>>> from jsonpath_rw import jsonpath, parse
>>> json_obj = {"student":[{"male":176,"female":162},{"male":174,"female":159}]}
>>> jsonpath_expr = parse("student[*].male")
>>> male = jsonpath_expr.find(json_obj)
>>> male #返回的是list,但是不是我们想要的值
[DatumInContext(value=176, path=Fields('male'), context=DatumInContext(value={'male': 176, 'female': 162}, path=<jsonpath_rw.jsonpath.Index object at 0x000001C6B95109B0>, context=DatumInContext(value=[{'male': 176, 'female': 162}, {'male': 174, 'female': 159}], path=Fields('student'), context=DatumInContext(value={'student': [{'male': 176, 'female': 162}, {'male': 174, 'female': 159}]}, path=This(), context=None)))), DatumInContext(value=174, path=Fields('male'), context=DatumInContext(value={'male': 174, 'female': 159}, path=<jsonpath_rw.jsonpath.Index object at 0x000001C6B9510588>, context=DatumInContext(value=[{'male': 176, 'female': 162}, {'male': 174, 'female': 159}], path=Fields('student'), context=DatumInContext(value={'student': [{'male': 176, 'female': 162}, {'male': 174, 'female': 159}]}, path=This(), context=None))))]
#想要获取值,要用如下方法
>>> [match.value for match in male]
[176, 174]
Python 相关文章推荐
Python基础之函数用法实例详解
Sep 10 Python
Python提取网页中超链接的方法
Sep 18 Python
20招让你的Python飞起来!
Sep 27 Python
python 截取 取出一部分的字符串方法
Mar 01 Python
Python内置模块hashlib、hmac与uuid用法分析
Feb 12 Python
将tensorflow的ckpt模型存储为npy的实例
Jul 09 Python
Flask框架响应、调度方法和蓝图操作实例分析
Jul 24 Python
Python3编码问题 Unicode utf-8 bytes互转方法
Oct 26 Python
搭建python django虚拟环境完整步骤详解
Jul 08 Python
淘宝秒杀python脚本 扫码登录版
Sep 19 Python
Tensorflow中tf.ConfigProto()的用法详解
Feb 06 Python
Pytorch使用shuffle打乱数据的操作
May 20 Python
flask-socketio实现WebSocket的方法
Jul 31 #Python
深入flask之异步非堵塞实现代码示例
Jul 31 #Python
Django框架使用富文本编辑器Uedit的方法分析
Jul 31 #Python
Windows下python3.6.4安装教程
Jul 31 #Python
windows下pycharm安装、创建文件、配置默认模板
Jul 31 #Python
win8下python3.4安装和环境配置图文教程
Jul 31 #Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
Jul 31 #Python
You might like
phpphp图片采集后按原路径保存图片示例
2014/02/18 PHP
php操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
php+html5实现无刷新图片上传教程
2016/01/22 PHP
PHP实现数据四舍五入的方法小结【4种方法】
2019/03/27 PHP
PHP文件打开关闭及读写操作示例解析
2020/08/06 PHP
JavaScript Cookie 直接浏览网站分网址
2009/12/08 Javascript
javascript学习笔记(三) String 字符串类型介绍
2012/06/19 Javascript
用jQuery实现一些导航条切换,显示隐藏的实例代码
2013/06/08 Javascript
js改变文章字体大小的实例代码
2013/11/27 Javascript
微信小程序使用第三方库Immutable.js实例详解
2016/09/27 Javascript
jQuery延迟执行的实现方法
2016/12/21 Javascript
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
2017/09/16 Javascript
JS使用setInterval实现的简单计时器功能示例
2018/04/19 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
微信小程序 云开发模糊查询实现解析
2019/09/02 Javascript
python实现用户管理系统
2018/01/10 Python
Python OpenCV 直方图的计算与显示的方法示例
2018/02/08 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
Python 实现域名解析为ip的方法
2019/02/14 Python
使用Python做垃圾分类的原理及实例代码附源码
2019/07/02 Python
python3获取文件中url内容并下载代码实例
2019/12/27 Python
Pytorch 神经网络—自定义数据集上实现教程
2020/01/07 Python
css3 transform 3d 使用css3创建动态3d立方体(html5实践)
2013/01/06 HTML / CSS
Java语言程序设计测试题判断题部分
2013/01/06 面试题
企业指导教师评语
2014/04/28 职场文书
爱岗敬业演讲稿
2014/05/05 职场文书
个人遵守党的政治纪律情况对照检查材料思想汇报
2014/09/25 职场文书
欢迎新生标语
2014/10/06 职场文书
关于运动会广播稿50字
2014/10/18 职场文书
毕业论文答辩演讲稿
2015/06/23 职场文书
尊师重教主题班会
2015/08/14 职场文书
高中生社会实践心得体会
2016/01/14 职场文书
党风廉政教育心得体会2016
2016/01/22 职场文书
详解python字符串驻留技术
2021/05/21 Python