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编程之event对象的用法实例分析
Mar 23 Python
python 生成器生成杨辉三角的方法(必看)
Apr 10 Python
Python实现购物系统(示例讲解)
Sep 13 Python
Python实现基于C/S架构的聊天室功能详解
Jul 07 Python
解读python如何实现决策树算法
Oct 11 Python
浅析python的优势和不足之处
Nov 20 Python
对IPython交互模式下的退出方法详解
Feb 16 Python
如何利用Python模拟GitHub登录详解
Jul 15 Python
django 信号调度机制详解
Jul 19 Python
python定义类self用法实例解析
Jan 22 Python
自学python用什么系统好
Jun 23 Python
Python - 10行代码集2000张美女图
May 23 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
PHP开发框架总结收藏
2008/04/24 PHP
建站常用13种PHP开源CMS比较
2009/08/23 PHP
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
2013/06/20 PHP
ThinkPHP模板IF标签用法详解
2014/07/01 PHP
php中opendir函数用法实例
2014/11/15 PHP
PHP导出Excel实例讲解
2016/01/24 PHP
php使用pear_smtp发送邮件
2016/04/15 PHP
PHP检测链接是否存在的代码实例分享
2016/05/06 PHP
JavaScript数值数组排序示例分享
2014/05/27 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
2016/05/18 Javascript
Asp.Net之JS生成分页条的方法
2016/11/23 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
JS声明对象时属性名加引号与不加引号的问题及解决方法
2018/02/16 Javascript
JS变量提升原理与用法实例浅析
2020/05/22 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
vue 图片裁剪上传组件的实现
2020/11/12 Javascript
[00:59]DOTA2荣耀之路1:Doom is back!weapon X!
2018/05/22 DOTA
Python中使用hashlib模块处理算法的教程
2015/04/28 Python
python使用fileinput模块实现逐行读取文件的方法
2015/04/29 Python
python和opencv实现抠图
2018/07/18 Python
Python中的引用知识点总结
2019/05/20 Python
对python中assert、isinstance的用法详解
2019/11/27 Python
如何使用Python破解ZIP或RAR压缩文件密码
2020/01/09 Python
Python3 pickle对象串行化代码实例解析
2020/03/23 Python
Python2.x与3​​.x版本有哪些区别
2020/07/09 Python
艺术应用与设计专业个人的自我评价
2013/11/19 职场文书
党委书记岗位职责
2013/11/24 职场文书
电厂厂长岗位职责
2014/01/02 职场文书
简历自我评价怎么写好呢?
2014/01/04 职场文书
大学毕业生个人自荐书
2014/07/02 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
贫困证明怎么写
2015/06/16 职场文书
严以用权学习心得体会
2016/01/12 职场文书
《中彩那天》教学反思
2016/02/24 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书