python jsonpath-rw_Python使用jsonpath-rw模块处理Json对象操作示例
本文实例讲述了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
下面只列下简单常用的基本方法
使用示例
>>> 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=, 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=, 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 jsonpath-rw_Python使用jsonpath-rw模块处理Json对象操作示例相关推荐
- python打开文件并读取内容-Python实现的读取文件内容并写入其他文件操作示例
本文实例讲述了Python实现的读取文件内容并写入其他文件操作.分享给大家供大家参考,具体如下: 文件目录结构,如图: read_file.py是工作文件,file_test.py是读取文件源,wri ...
- Python学习-基础篇5 常用模块+类与对象(1)
#random模块 1 import random2 3 print(random.random())#(0,1)----float 大于0且小于1之间的小数4 5 print(random.ran ...
- python同时对文件进行读写操作-Python实现的读取文件内容并写入其他文件操作示例...
本文实例讲述了Python实现的读取文件内容并写入其他文件操作.分享给大家供大家参考,具体如下: 文件目录结构,如图: read_file.py是工作文件,file_test.py是读取文件源,wri ...
- python乘法函数_Python中列表与元组的乘法操作示例
本文实例讲述了Python中列表与元组的乘法操作.分享给大家供大家参考,具体如下: 直接上code吧,还可以这么玩儿 列表乘法: li=[1,] li=li*3 print(li) out: [1, ...
- python 双精度浮点_Python双精度浮点数运算并分行显示操作示例
Python双精度浮点数运算并分行显示操作示例 这篇文章主要介绍了Python双精度浮点数运算并分行显示操作,涉及Python数学运算及显示相关操作技巧,注释备有详尽的说明,需要的朋友可以参考下 #c ...
- python 中文件输入输出及os模块对文件系统的操作
整理了一下python 中文件的输入输出及主要介绍一些os模块中对文件系统的操作. 文件输入输出 1.内建函数open(file_name,文件打开模式,通用换行符支持),打开文件返回文件对象. 2. ...
- python神奇时钟项目_Python Tkinter模块实现时钟功能应用示例
本文实例讲述了Python Tkinter模块实现时钟功能.分享给大家供大家参考,具体如下: 本机测试效果: 完整代码: # coding=utf-8 from Tkinter import * im ...
- python卷积计算_Python使用scipy模块实现一维卷积运算示例
本文实例讲述了python使用scipy模块实现一维卷积运算.分享给大家供大家参考,具体如下: 一 介绍 signal模块包含大量滤波函数.b样条插值算法等等.下面的代码演示了一维信号的卷积运算. 二 ...
- python namedtuple用法_Python的collections模块中namedtuple结构使用示例
namedtuple 就是命名的 tuple,比较像 C 语言中 struct.一般情况下的 tuple 是 (item1, item2, item3,...),所有的 item 都只能按照 inde ...
最新文章
- 《R语言实战》读书笔记--第一章 R语言介绍
- 概率分布:PMF与PDF
- Vivado抓取信号
- python 堆_面试再问你什么是堆和栈,你就把这篇文章甩给他
- VC++ .net 2005运行库解析
- Java访问修饰符——用于控制可见性
- ios-deploy out of date (1.9.4 is required). To upgrade with Brew: brew upgrade ios-deploy
- 力扣-507 完美数
- ROS2 Galactic nav2 使用自己的行为树插件
- docker深入2-API示例
- 2022年6月25日PMP考试通关宝典-5
- libcurl基础教程及封装(支持同步异步请求,支持多线程下载,支持https)
- 会议会展产业要善用信息技术提高活动运营管理效率
- HTML个人网站设计(源码)
- ins图片视频批量下载
- 亚马逊查询订单listorders方法
- Win7系统一直提示盗版怎么办【系统天地】
- 成年人社交中的10个潜规则
- JAVA音程_桌面应用|与 Linux 一起学习:学习音乐
- android 市场 历史版本,安卓市场旧版本
热门文章
- 基于OGG Datahub插件将Oracle数据同步上云
- 省钱小贴士(ECS):教你如何每年省出8w+ 块
- 阿里云MaxCompute(大数据)公开数据集---带你玩转人工智能 1
- 【SpringCloud-Alibaba系列教程】14.一文教你入门RocketMQ
- 当类的泛型相关时,如何在两个泛型类之间创建类似子类型的关系呢
- 技术案例分享:WIPTEC采用Aruba边缘服务平台,实现物流配送生产自动化、精简生产力
- OpenInfra Days China 2020大会议程已上线!
- 行!人工智能玩大了!程序员:太牛!你怎么看?
- 刷爆了!GitHub标星1.6W,这个 Python 项目太实用!
- 商家笑了 设计师哭了,京东+英特尔的AI这招太绝