当前位置: 首页 > news >正文

从0开始python学习-40.通过正则表达式/json进行接口关联

目录

1. 正则表达式:使用re库(需安装-pip install re),只能提取字符串的数据。

1.1 re.seach:提取一个值,得到的是一个对象,通过下标group(1)取值,如果没有匹配到值则返回None

1.2 re.findall:提取多个值,得到的是一个列表,通过下标【0】取值,如果没有匹配到值则返回一个空列表

2. Jsonpath表达式:jsonpath

2.1 jsonpath.jsonpath() 提取多个值,得到的是一个列表,通过下标【0】取值,如果没有匹配到值则返回None

2.2 语法规则


响应数据示例

{"code": 200,"messages": "ok","data": [{"name": "宋瑶","time": "2020-09-30 18:58:33","relation": {"mobile": "15811111111","CardType": "身份证"}}]
}

1. 正则表达式:使用re库(需安装-pip install re),只能提取字符串的数据。

1.1 re.seach:提取一个值,得到的是一个对象,通过下标group(1)取值,如果没有匹配到值则返回None

url = 'http://192.168.1.1:8088/list'
data = {"name":"张三","age":18}
res = requests.get(url=url,  data=data)print(res.text)  
search_value = re.search('name="csrf_token" value="(.*?)"', res.text)
print("\n"+search_value.group(1))

正常提取到的情况

.*? 表示匹配任意字符到下一个符合条件的字符

.group(1) 列出第一个括号匹配的部分,适用于有多个括号的情况

 .group(2) 则可以将第二个匹配的部分提取出来

无法提取到的情况,若使用search_value.group(1)则会报错AttributeError,因为并没有提取到任何数据

 

1.2 re.findall:提取多个值,得到的是一个列表,通过下标【0】取值,如果没有匹配到值则返回一个空列表

url = 'http://192.168.1.1:8088/list'
data = {"name":"张三","age":18}
res = requests.get(url=url,  data=data)print(res.text)findall_value = re.findall('name="csrf_token" value="(.*?)"', res.text)
print(findall_value[0])

正常提取到情况,提取出角标为0的值

 使用角标的形式提取,若角标值大于了可匹配到的数据总数,则会出现角标越界的情况IndexError

 获取不到时返回空列表

2. Jsonpath表达式:jsonpath

2.1 jsonpath.jsonpath() 提取多个值,得到的是一个列表,通过下标【0】取值,如果没有匹配到值则返回None

import requests
import jsonurl = "http://test/project/list"payload = json.dumps({"pageNo": 0,"pageSize": 5,"queryDto": {"projectName": "测试"}
})
headers = {'authInfo': '%7B%22user%22','Content-Type': 'application/json'
}response = requests.post(url, headers=headers, data=payload)
print(response.text)

打印结果为:

{"code": "0","action": "/project/list","msg": "succeeded","data": {"pageNo": 0,"pageSize": 5,"totalRecords": 1,"data": [{"id": "1310935793613242370","projectName": "测试"}]},"timestamp": "2024-01-03 21:33:38","ok": true
}

2.2 语法规则

(1) $ 根节点

(2) $.取子节点

j = jsonpath.jsonpath(response.json(),'$.code')
print(j) 

 

 (3) 取列表中的值:$.上级[角标] .key

j = jsonpath.jsonpath(response.json(),'$.data.data[0].id')
print(j)

表示提取第一层级为data,下一级也是data的列表中的第一组数据中的id的value值。这里可以通过id反写层级

 (4) $..递归取值:会把所有data的value都取出来,以列表形式显示

j = jsonpath.jsonpath(response.json(),'$..data')
print(j)

结果:

 

相关文章:

从0开始python学习-40.通过正则表达式/json进行接口关联

目录 1. 正则表达式:使用re库(需安装-pip install re),只能提取字符串的数据。 1.1 re.seach:提取一个值,得到的是一个对象,通过下标group(1)取值,如果没有匹配到值则返回None 1.…...

【React系列】高阶组件

本文来自#React系列教程:https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. 高阶组件 1.1. 认识高阶组件 什么是高阶组件呢?相信很多同学都听说过,也用过 高阶函数&…...

听GPT 讲Rust源代码--src/tools(38)

File: rust/src/tools/clippy/clippy_dev/src/lib.rs rust/src/tools/clippy/clippy_dev/src/lib.rs文件是Clippy开发工具的入口文件,其作用是提供Clippy开发过程中所需的功能和工具。Clippy是一个Rust代码的静态分析工具,用于提供各种有用的代码规范、编…...

.NET C# 如何获取object对象的数据

如何获取object对象的数据 在DAL层,一般会封装一些返回值,返回的类型就会为object ,但是需要其中的值进行判断 public static object SaveFileIns(string filepath){return new { path pathlist, file_name fileNamelist, Message "…...

使用IDEA创建使用 JDK8 的 2.x.x 版本的 Spring Boot 项目以及 Spring Boot 项目如何修改JDK版本

目录 一、在阿里云上官网上创建项目 二、将 IDEA 中创建项目的源地址修改为阿里云官网 三、创建 3.x.x 的项目之后修改配置降低至 2.7.x 版本和使用 JDK8(修改 Spring Boot 的 JDK 版本同理) 从上面的 Spring Boot 官网的截图中可以发现,自…...

游戏服务器整体架构思考

1.启动层 不管是单体架构还是微服务架构,其实服务器本身都是要启动的。 不管是用grpc实现远程调用,还是dubbo,还是说就一个简单的tcp监听,都是要启动的。 启动的时候,肯定要整合下controller接入层,不管是叫…...

labelme 标注的数据集转化为Mask-Rcnn适用的数据集

labelme 标注的数据集转化为Mask-Rcnn适用的数据集 食用步骤 1.labelme标注数据时,将生成的json文件和原图保存在一起 2.只需提供labelme生成的数据的文件夹,和maskrcnn的数据集文件夹,运行代码就会自动进行处理 3.代码会在提供的maskrcn…...

x-cmd pkg | tig - git 文本模式界面

目录 简介首次用户功能特点类似工具与竞品进一步探索 简介 tig 由 Jonas Fonseca 于 2006 年使用 C 语言创建的 git 交互式文本命令行工具。旨在开启交互模式快速浏览 git 存储库的信息以及 git 命令的运行。 首次用户 使用 x tig 即可自动下载并使用 在终端运行 eval "…...

信息论与编码期末复习——概念论述简答题(一)

个人名片: 🦁作者简介:一名喜欢分享和记录学习的在校大学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:V…...

[Kubernetes]4. 借助腾讯云TKE快速创建Pod、Deployment、Service部署k8s项目

前面讲解了通过命令行方式来部署k8s项目,下面来讲讲通过腾讯云TKE来快速创建Pod、Deployment、Service部署k8s项目,云平台搭建Kubernetes可参考[Kubernetes]1.Kubernetes(K8S)介绍,基于腾讯云的K8S环境搭建集群以及裸机搭建K8S集群 一.通过腾讯云TKE创建集群 1.创建集群 参考上…...

二叉排序树的创建、插入、查找和删除【数据结构】

二叉排序树 若它的左子树不空,则左子树上所有结点的值均小于它根结点的值。若它的右子树不空,则右子树上所有结点的值均大于它根结点的值。它的左、右树又分为⼆叉排序树 二叉排序树也叫二叉查找树、二叉搜索树 二叉排序树的创建、插入、查找和删除 …...

【管理篇 / 恢复】❀ 07. macOS下用命令刷新固件 ❀ FortiGate 防火墙

【简介】随着苹果电脑的普及,很多管理员都会通过苹果电脑对飞塔防火墙进行管理。当防火墙需要命令状态下刷新固件时,在macOS下用命令刷新固件,将会是一个小小的挑战。 首先是硬件的连接,USB配置线的USB一头,接入MAC的U…...

工作纪实40-使用redis的几种姿势

线上查问题看某个redis的key值,记录一下 1.直接使用telnet进行连接(贼拉方便) telnet ip port > auth pwd1.模糊查询 scan 0 MATCH abc* 2.查看所有key keys * 3.ttl key 查看key的ttl2.使用redis-cli连接(费劲吧啦,还需要本地…...

修改 docker /dev/shm 的大小

修改 docker /dev/shm 的大小 1,获取完整id: docker inspect 245| grep Id rootlynxi:~# docker inspect 245| grep Id"Id": "245ab167ed9a79873b31b3a38df2053870fe72f267c3c1a660df25c63e37e88b",2,修改 ShmSize&…...

【观察】Aginode安捷诺:坚守“长期主义”,服务中国数字经济

毫无疑问,随着整个社会加速数字化转型,尤其是5G、人工智能、大数据等技术兴起,以及智慧医疗、智慧金融、智能制造等应用加速落地,算力网络在经济社会发展中扮演了愈来愈重要的角色,成为支撑数字经济蓬勃发展的“新引擎…...

HttpClient库与代理IP在爬虫程序中的应用

目录 前言 一、HttpClient库的基本使用方法 二、代理IP的使用方法 三、代理IP池的使用方法 四、总结 前言 在编写爬虫程序时,我们经常会使用HttpClient库来发送HTTP请求,获取网页内容。然而,有些网站可能会对频繁的请求进行限制&#x…...

C#最佳工具集合:IDE、分析、自动化工具等

C#是企业中广泛使用的编程语言,特别是那些依赖微软的程序语言。如果您使用C#构建应用程序,则最有可能使用Visual Studio,并且已经寻找了一些扩展来对您的开发进行管理。但是,这个工具列表可能会改变您编写C#代码的方式。 C#编程的…...

promethues grafana 安装和使用

文章目录 1、promethues安装2、node-exporter安装3、grafana安装4、配置promethues监控node节点5、grafana操作外传 Docker 镜像下载地址: https://hub.docker.com 比较好的hub.docker.com///-- https://hub.docker.com/u/bitnami grafana监控面板:https…...

华为DriveONE电机控制器拆解实拍

如果说之前的问界M5、M7,华为让我们看到其在智能化上确实拥有遥遥领先的能力,那么在智界S7上,则让我们看到华为在动力、底盘这些硬件执行层面,竟然也有不输给很多车企的实力。1、华为电驱,全球第一?在智界S…...

【git使用】历史commit的分割(git rebase和 git reset的联合使用)

参考 [译] 分割一个已存在的 git commit - 掘金Git - 重写历史idea git如何撤回提交 - PingCodegit 工作原理与撤销操作图解 | Shall We Code? 分割一个已存在的 git commit Git 与其他版本控制系统的主要区别之一,在于其允许用户重写历史。实现这一目的的主要途…...

栈和队列oj题——225. 用队列实现栈

** 个人主页:晓风飞 专栏: 数据结构| Linux|| C语言 路漫漫其修远兮,吾将上下而求索 文章目录 题目要求:实现 MyStack 类:注意:示例:解释:提示: 解题核心数据结构的定义初…...

集合的三种遍历方式

迭代器(Iterator) 概述:Iterator 是个接口,迭代器是集合的专用遍历方式 使用方法,我们想要使用迭代器,必须首先得到集合对象,通过集合对象生成迭代器对象,才能进行集合的遍历 常用…...

Mysql 中的常用命令

在数字化世界中,数据库已经成为数据存储和处理的核心。而MySQL,作为最受欢迎的关系型数据库管理系统之一,其强大的功能和易用性使它成为开发者和企业的首选。掌握MySQL中的常用命令,是每一位数据库管理员和开发者的基本要求。本篇…...

【Java】CompletableFuture使用方法

背景 CompletableFuture是Java 8中引入的一个类,它实现了Future和CompletionStage接口,用于表示异步计算的结果。使用CompletableFuture可以方便地编写异步编程的代码,并且可以链式地组合多个异步操作。 接口 CompletableFuture实现了Future…...

摆烂式学习ssh

摆烂式学习ssh ssh工作原理ssh基本使用sshd配置文件密钥登录1.客户端2.服务器3.注意事项4.使用密钥登录测试 ssh高级使用技巧1.在非正规端口启动2.rsync 命令3.透过 ssh 通道加密原本无加密的服务4.以ssh信道配合x server 传递图形接口5.ssh配合virtualbox虚拟机使用技巧 ssh工…...

用 Python 抓取 bilibili 弹幕并分析!

01 实现思路 首先,利用哔哩哔哩的弹幕接口,把数据保存到本地。接着,对数据进行分词。最后,做了评论的可视化。 02 弹幕数据 平常我们在看视频时,弹幕是出现在视频上的。实际上在网页中,弹幕是被隐藏在源代码…...

目标检测YOLO实战应用案例100讲-基于红外图像处理的无人机光伏组件故障检测(续)

目录 3.2 自适应温度阈值故障检测算法设计 3.3 基于拟合灰度曲线的故障检测方案设计...

go mod 命令详解

文章目录 1.关于模块2.关于 go mod3.格式4.示例参考文献 1.关于模块 模块(Modules)是 Go 1.11 版本引入的一依赖管理机制。 一个模块是 Go packages 的集合,定义在项目根目录下的 go.mod 文件。go.mod 文件定义了模块的路径,这也…...

花了一小时,拿python手搓了一个考研背单词软件

听说没有好用的电脑端背单词软件?只好麻烦一下,花了一小时,拿python手搓了一个考研背单词软件。 代码已经开源在我的github上,欢迎大家STAR! 其中,数据是存放在sqlite中,形近词跳转是根据jaro …...

一篇文章学会Vim

一篇文章学会Vim 声明:以下内容均为我个人的理解,如果发现错误或者疑问可以联系我共同探讨 简介 Vim是一个高度可定制的终端文本编辑器,它可以很方便的创建和修改任何类型的文本。作为vi的升级版,有许多新的特性(以下列出的特性…...

建设施工合同备案在哪个网站/游戏推广话术技巧

我在用网页.py从Oracle创建一个简单的报告页。当我使用vars传递参数的最佳实践方法时,延迟是11-12秒。当我使用字符串替换执行相同的查询时,查询将在不到一秒钟的时间内运行。我是这样检查的:sql """SELECT a, b, cFROM my_t…...

住房城乡建设网站查询/seo和网络推广有什么区别

我试图让这个模块在服务器上工作,我收到标题中的错误:我的剧本:from bs4 import BeautifulSoup当我运行它:aclarktycho ~ % python test.pyTraceback (most recent call last):File "test.py", line 1, in from bs4 import Beautif…...

房山重庆网站建设/关键词优化的主要工具

我在微服务组里面主要负责配置中心的构建,我们的配置中心使用到了ETCD。在我们的内网环境中搭建了三个节点的ETCD,不过这三个节点的ETCD都搭建在同一台机器上。后来机器资源不够了系统直接kill了ETCD,导致内网的ETCD三个节点全部挂掉了。刚开…...

沧州网站优化公司/网站seo优化公司

本文摘自作者《网站数据分析:数据驱动的网站管理、优化和运营 》:http://item.jd.com/11295690.html 时间序列图是描述流程特性值在一段时间内变化波动的趋势和规律的统计工具,如整个流程大体在什么范围内运行、是否具有波动较大的时期或时点…...

政务网站建设工作计划/上海网络推广

一、数据库名什么是数据库名?数据库名就是一个数据库的标识,就像人的身份证号一样。他用参数DB_NAME表示,如果一台机器上装了多全数据库,那么每一个数据库都有一个数据库名。在数据库安装或创建完成之后,参数DB_NAME被…...

镇江市机关效能与作风建设网站/郑州谷歌优化外包

参考【易百教程】用Python实现链表及其功能 1 """2 python链表的基本操作:节点、链表、增删改查3 """4 import sys5 6 class Node(object):7 """8 节点类,实例化后的对象用来表示链表中的一个节点…...