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]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526721.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文件服务器mfs,分布式文件系统MFS(moosefs)实现存储共享

这种架构除了性能问题而外,还存在单点故障,一旦这个NFS服务器发生故障,所有靠共享提供数据的应用就不再可用,尽管用rsync方式同步数据到另外一个服务器上做nfs服务的备份,但这对提高整个系统的性能毫无帮助。基于这样一…

as mysql with 嵌套_MySQL_MySQL的嵌套查询,MySQl从4.11版后已经完全支持嵌 - phpStudy

MySQL的嵌套查询MySQl从4.11版后已经完全支持嵌套查询了,那么下面举些简单的嵌套查询的例子吧(源程序来自MySQL User Manual):1. SELECT语句的子查询语法: SELECT ... FROM (subquery) AS name ...先创建一个表:CREATE TABLE t1 (s1 INT, s2 CHAR(5)…

mysql 1215_mysql执行带外键的sql文件时出现mysql ERROR 1215 (HY000): Cannot add foreign key constraint的解决...

ERROR 1215 (HY000): Cannot add foreign key constraint最近在建表时遇到了这个错误,然后找了下找到了解决办法,记录下:本来是要建两张表:出现下面的提示:然后开始上网查,有的说是用的引擎不同的原因&…

mysql里面可以用正则吗_Mysql中使用正则表达式

最近在《MYSQL必知必会》这本书中读到在SQL中使用正则表达式,以前是学过数据库也学过正则表达式,但是不知道原来他们可以一起使用,这里做下记录。首先是Mysql使用正则表达式的语法:SELECT ... FROM ... WHERE ... REGEXP ...(这…

mysql数据库的备份和恢复的常用方法_MySQL数据库备份与恢复方法(转)

常有新手问我该怎么备份数据库,下面介绍3种备份数据库的方法:MySQL中的每一个数据库和数据表分别对应文件系统中的目录和其下的文件。在Linux下数据库文件的存放目录一般为/var/lib/mysql。在Windows下这个目录视MySQL的安装路径而定,DiaHost…

mysql sum函数返回类型_MySQL的sum函数返回的门类

MySQL的sum函数返回的类型 今天项目切换数据库时,出错 访问数据库的代码大概是这样: String sql "select sum(number) as sumNumberOfOneDay from tableName";ListMap rows getJdbcTemplate().queryForList(sql);for (Map row : rows) {Some…

mysql 联合索引 性能_mysql:联合索引及优化

命名规则:表名_字段名1、需要加索引的字段,要在where条件中2、数据量少的字段不需要加索引3、如果where条件中是OR关系,加索引不起作用4、符合最左原则尽量不要用or,如果可以用union代替,则一定要代替https://segmentf…

以下不属于mysql列类型的是什么意思_下列 ________ 类型不是 MySQL 中常用的的数据类型。_学小易找答案...

【简答题】工作区跳线的制作 请依据EIA568国际标准,制作一根直通线(即两端都是EIA568B线芯排布规律) 做好网线后,请拍照上传作业。【单选题】UNIQUE 惟一索引的作用是 ( ) :【简答题】根据实地观察结果,分别从树性、枝干、叶片、花、果实(如果有)等器官指出以下三组果树在植株形…

ruby mysql dbi_Ruby MySQL DBI实例

本次章节将介绍如何用Ruby来访问数据库。类似的Perl DBI模块为Ruby脚本的Ruby DBI模块提供了一种数据库(这里用MySQL讲解)独立的接口。DBI代表数据库无关的接口为RubyDBI提供的Ruby代码和底层数据库之间的抽象层,允许你真的很容易切换数据库实现。它定义了一套方法&…

api demo 京东商品详情_jd-demo

一个仿京东的网站:后端使用java,基本架构:springMVC spring mybatis;前端技术:HtmlCSSJQueryReactSass...后台接口说明:####1.统计用户、商品、订单数量/manage/statistic/base_count.dorequest无respons…

mysql linux 迁移mac_Mac和Linux之间传输数据,并导出mysql数据到本地

从 本地 复制到 远程复制文件:命令格式:scp local_file remote_usernameremote_ip:remote_folder或者scp local_file remote_usernameremote_ip:remote_file或者scp local_file remote_ip:remote_folder或者scp local_file remote_ip:remote_file第1,2个…

mysql与tomcat_mysql数据库与tomcat服务器的一些细节问题

java程序使用数据库的方法1.使用jndi数据源核心代码:initCtx new InitialContext()DataSource ds;ds (DataSource) initCtx.lookup("java:comp/env/jdbc/mysql1");conn ds.getConnection();----------配置服务器信息web项目web.xml中配置MySQL DB Conn…

python出现严重错误_安装出现严重错误!大神帮忙分析下原因

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼查看日志结果如下:(看不懂。。。)[2874:052C][2018-07-05T22:18:14]e000: Error 0x80070643: Failed to install MSI package.[2874:052C][2018-07-05T22:18:14]e000: Error 0x80070643: Failed to configure per-user …

信息安全学习路线图_Python学习图谱:学习到困惑的时候可以参考的图谱

很多同学都想学习Python,最近就连地产大佬潘石屹都要学Python。刚刚开始学习Python的同学来说,不知道从哪里下手,学习起来比较困惑,没有找到一个好的学习方法,没有高手带路,没有人督促你学习,或…

如何更新mysql数据库字段_如何使用MySQL一个表中的字段更新另一个表中字段

1,修改1列update student s, city cset s.city_name c.namewhere s.city_code c.code;2,修改多个列update a, bset a.titleb.title, a.nameb.namewhere a.idb.id•子查询update student s set city_name (select name from city where code s.city_c…

mysql到mysqli转变表_利用mysql和mysqli取得mysql的所有数据库和库中的所有表

/*** mysqli op mysql demo*//***公用函数*//***功能:列出一个数据库的所有表*param$dbname*param$con*/functionlist_tables($dbname,$con){mysql_select_db($dbname,$con)or die("选择数据库失败!");$res mysql_query("SHOW TABLES");$table…

zabbixdocker里的mysql_docker zabbix安装部署(数据库和web及zabbix服务都用docker版)

一、docker zabbix相关镜像下载分别docker pull (mysql:5.7 、zabbix/zabbix-agent 、zabbix/zabbix-server-mysql 、zabbix/zabbix-web-nginx-mysql)[rootald8 ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEmysql 5.7 98455b9624a9 12 days ago 372MBzabbix/zabbix…

mysql gui 修改密码_MySQL修改root密码的各种方法整理

整理了以下四种在MySQL中修改root密码的方法,可能对大家有所帮助!方法1: 用SET PASSWORD命令mysql -u rootmysql> SET PASSWORD FOR rootlocalhost PASSWORD(newpass);方法2:用mysqladminmysqladmin -u root password "newpass"如果root已…

mysql 物理结构设计_数据库的物理结构设计指的是什么?

Log Goup ID,可能会配置多个redo组,每个组对应一个id,当前都是0,占用4字节Start LSN,这个redo log文件开始日志的lsn,占用8字节Log File Number,总是为0,占用4字节Created By&#x…

mysql 监控 开源_强大的开源企业级数据库监控利器Lepus

Lepus监控简单介绍开源企业级数据库监控系统简洁、直观、强大的开源数据库监控系统,MySQL/Oracle/MongoDB/Redis一站式性能监控,让数据库监控更简单简单介绍:Lepus(天兔)数据库企业监控系统是一套由专业DBA针对互联网企业开发的一款专业、强大…