《爆肝整理》保姆级系列教程python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
简介
有些 post 的请求参数是 json 格式的,这个前面发送post 请求里面提到过,需要导入 json模块处理。现在企业公司一般常见的接口因为json数据容易处理,所以绝大多数返回数据也是 json 格式的,我们在做判断时候,往往只需要提取其中
几个关键的参数就行,这时候我们就需要 json 来解析返回的数据了。首先来说一下笔者为何要单独写这么一篇,原因是:python 里面 bool 值是 True 和 False,json 里面 bool 值是 true和 false,并且区分大小写,这就尴尬了,明明都是 bool 值。
在python里面写的代码,传到json里,不用说肯定识别不了,所以需要把python的代码经过encode后成为 json 可识别的数据类型,反之json数据就需要decode后成为python代码可识别的数据类型。这个也是需要初学者注意,也算是个细微差和
一个坑人的地方吧,如果不注意很容易掉坑里啊。笔者就掉进去过,还好自救能力强,爬出来了,所以为了警醒后来者,就有了这篇随笔。
json 模块简介
1、Json 简介:Json,全名 JavaScript Object Notation,JSON(JavaScript Object Notation(记号、标记)) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立
于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。JSON易于人阅读和编写,同时也易于机器解析和生成。常用于 http 请求中,接口
返回的数据中。
2、可以用 help(json),查看对应的源码注释内容

编码Encode(python->json)
1、为什么要 encode,笔者在开头就给各位小伙伴开门见山的说出来了,让各位带着问题来探索、来学习、来思考
2、举个简单例子,下图的实例中 dict 类型经过 json.dumps()后变成 str,True 变成了 true,False变成了 fasle

3、从json模块的对应源码中可以查看到,python 数据转化成 json可识别的数据,对应的表关系如下

解码 decode(json->python)
1、以博客园的登录成功结果:{"success":True}为例,我们其实最想知道的是 success 这个字段返回的是 True 还是 False,以便于我们对接口进行断言,以下是fiddler抓包博客园登录成功的结果

2、如果以 content 字节输出,返回的是一个字符串:{"success":true},这样获取后面那个结果就不方便了,导致断言也不方便
3、如果经过 json 解码后,返回的就是一个字典:{u'success': True},这样获取后面那个结果,就用字典的方式去取值:result2["success"],这样不言而喻断言也就简单方便了
4、由于博客园的登录机制的改变,我们这里接着上一篇的删除随笔的返回结果,给小伙伴们实战演练一下
5、用fiddler抓包,抓到删除新建随笔的请求,从抓包结果可以看出,返回结果是一个字符串:{"isSuccess":True},按照上边的步骤用代码实现

6、代码及结果(看到了吧,就是这么轻松被我们取到其value了,接下来就可以进行断言了)

7、从json模块的对应源码中可以查看到, json 数据转化成 python 可识别的数据,对应的表关系如下

8、参考代码
1 # coding:utf-82 import requests3 # 先打开登录首页,获取部分cookie4 url = "https://passport.cnblogs.com/user/signin"5 headers = {6 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"7 } # get方法其它加个ser-Agent就可以了8 s = requests.session()9 r = s.get(url, headers=headers,verify=False)
10 print (s.cookies)
11 # 添加登录需要的两个cookie
12 c = requests.cookies.RequestsCookieJar()
13 c.set('.CNBlogsCookie', 'XXX') # 填上面抓包内容
14 c.set('.Cnblogs.AspNetCore.Cookies','XXX') # 填上面抓包内容
15 c.set('AlwaysCreateItemsAsActive',"True")
16 c.set('AdminCookieAlwaysExpandAdvanced',"True")
17 s.cookies.update(c)
18 print (s.cookies)
19 result = r.content
20 print(result.decode('utf-8'))
21 # 登录成功后保存编辑内容
22 url2= "https://i.cnblogs.com/EditPosts.aspx?opt=1"
23 body = {"__VIEWSTATE": "",
24 "__VIEWSTATEGENERATOR":"FE27D343",
25 "Editor$Edit$txbTitle":"这是绕过登录的标题:000",
26 "Editor$Edit$EditorBody":"<p>这里是中文内容:http://www.cnblogs.com/duhong/</p>",
27 "Editor$Edit$Advanced$ckbPublished":"on",
28 "Editor$Edit$Advanced$chkDisplayHomePage":"on",
29 "Editor$Edit$Advanced$chkComments":"on",
30 "Editor$Edit$Advanced$chkMainSyndication":"on",
31 "Editor$Edit$lkbDraft":"存为草稿",
32 }
33 r2 = s.post(url2, data=body, verify=False)
34 print (r.content.decode('utf-8'))
35
36 # 第三步:正则提取需要的参数值
37 import re
38 postid = re.findall(r"postid=(.+?)&", r2.url)
39 print(type(postid))
40 print (postid) # 这里是 list
41 # 提取为字符串
42 print (postid[0])
43 # 第四步:删除草稿箱
44 url3 = "https://i.cnblogs.com/post/delete"
45 json3 = {"postId": postid[0]}
46 r3 = s.post(url3, json=json3, verify=False)
47 result = r3.content #content数据是字节输出
48 print(type(result))
49 print(result)
50 #json是经过加码encode成对应python的数据类型
51 result1 = r3.json()
52 print (type(result1))
53 print(result1['isSuccess'])
软件测试到测试开发全测试生涯学习路线】
以及全套配套的学习资料,视频教程....
:【以下路线图太详细了只能展开部分,具体的可以在文章末尾扫描小卡片备注000领取哦】
1:自动化测试进阶系列:

2:全栈性能测试,监控以及调优

3:全栈测试开发平台实战

4:全栈安全测试渗透测试

5:devops持续集成部署

6:全栈接口测试工具进阶

7:跨平台自动化测试工具

8:大厂简历,真题,录音

9:全栈系列课企业项目实战

总结:现阶段如何突出重围呢?唯有不断的学习,下面是软件测试到测试开发全职业生涯全套学习资料
【需要的可以点击下方官方推广小卡片扫码备注000免费领取】

相关文章:
《爆肝整理》保姆级系列教程python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
简介 有些 post 的请求参数是 json 格式的,这个前面发送post 请求里面提到过,需要导入 json模块处理。现在企业公司一般常见的接口因为json数据容易处理,所以绝大多数返回数据也是 json 格式的,我们在做判断时候,往往只…...
分享111个HTML旅游交通模板,总有一款适合您
分享111个HTML旅游交通模板,总有一款适合您 111个HTML旅游交通模板下载链接:https://pan.baidu.com/s/1VHJSBVJbj4PQpPAwxysJBg?pwd8b17 提取码:8b17 Python采集代码下载链接:采集代码.zip - 蓝奏云 汽车租赁平台网页模板 汽…...
guava中ImmutableList使用示例详解
ImmutableList是一个不可变、线程安全的列表集合,它只会获取传入对象的一个副本,而不会影响到原来的变量或者对象,如下代码: int a 23;ImmutableList<Integer> list ImmutableList.of(a, 12);System.out.println(list);a …...
ASE28N50-ASEMI高压N沟道MOS管ASE28N50
编辑-Z ASE28N50在TO-247封装里的静态漏极源导通电阻(RDS(ON))为200mΩ,是一款N沟道高压MOS管。ASE28N50的最大脉冲正向电流ISM为110A,零栅极电压漏极电流(IDSS)为1uA,其工作时耐温度范围为-55~150摄氏度。ASE28N50功…...
MyBatis缓存
文章目录MyBatis的缓存1、缓存概述2、MyBatis的一级缓存2.1 一级缓存的使用2.2 一级缓存的失效3、MyBatis的二级缓存3.1 二级缓存的开启3.2 二级缓存的失效3.2 二级缓存相关配置4、系统缓存的查询顺序5、EHCache的使用5.1 EHCache基本介绍5.2 EHCache的基本使用5.3 EHCache配置…...
Linux环境下(CentOS 7)安装Java(JDK8)
Linux环境下(CentOS 7)安装Java(JDK8) 一、安装教程 1.1 首先,进入oracle官网下载jdk8的安装包,下载地址如下,这里以 jdk-8u121-linux-x64.tar.gz安装包为例。 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-21…...
基于STM32L431+Liteos的串口空闲中断加DMA循环接收
①MCU为STM32L431,使用串口2。 ②Liteos采用接管中断的方式。 STM32CubeMX配置生成串口代码: 串口DMA接收和发送配置区别是接收采用循环模式,发送为正常模式。 将生成的代码移植到liteos工程中,由于使用的接管中断的方式&#…...
BZOJ4403 序列统计
题目描述 给定三个正整数N、L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量。输出答案对106310^631063取模的结果。 输入 输入第一行包含一个整数T,表示数据组数。 第2到第T1行每行包含三个整数N、L和R,N、…...
如何正确使用 钳位二极管
在电路设计中,经常遇到需要IO保护的场景,比如ADC采样,GPIO接收电平信号等。 常见的保护方法有分压,限幅,限流等。本次我们讨论限幅方法中的 钳位二极管。 我们以BAT54S为例,它的符号是这样的, 而在很多手册里,我们可以看到,一般是这样使用的: 因此,我设计了简化…...
【C语言进阶】动态内存管理
👦个人主页:Weraphael ✍🏻作者简介:目前是C语言学习者 ✈️专栏:C语言航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&a…...
第一批因ChatGPT坐牢的人,已经上路了
大家好,我是 Jack。 ChatGPT 的火爆有目共睹,有人靠着它赚了第一桶金,也有人靠着它即将吃上第一顿牢饭。 任何一件东西的火爆,总会给一些聪明人带来机会。 艾尔登法环火的时候,一堆淘宝卖魂的;羊了个羊火…...
Eclipse下Maven的集成
Eclipse下Maven的集成 2.1指定本地maven环境 参考:Eclipse的Maven创建_叶书文的博客-CSDN博客_eclipse创建maven项目 指定用本地maven指定maven仓库设置和地址2.2创建maven项目 1.新建 2.目录设置 3.坐标设置(随便写就行) 4.目录结构 2.3配置…...
Elasticsearch7学习笔记(尚硅谷)
文章目录一、ElasticSearch概述1、ElasticSearch是什么2、全文搜索引擎3、ElasticSearch 和 Solr3.1 概述3.2 比较总结二、Elasticsearch入门1、Elasticsearch安装1.1 下载使用1.2 数据格式2、索引操作3、文档操作(了解)3.1 创建文档3.2 文档查询3.3 文档…...
前端学习第一阶段-第7章 品优购电商项目
7-1 品优购项目介绍及准备工作 01-品优购项目导读 02-网站制作流程 03-品优购项目规划 04-品优购项目搭建 05-品优购项目-样式的模块化开发 06-品优购项目-favicon图标制作 07-品优购项目-TDK三大标签SEO优化 7-2 首页Header区域实现 08-品优购首页-快捷导航shortcut结构搭建 0…...
cocos2dx 4.0 - cpp - pc版 环境搭建
开发环境vs2022 cocos2dx4.0 python2.7.18 cmake3.25安装教程(环境搭建)安装VS2022-Community, 勾选c进行安装安装cmake3.25, 勾选环境变量进行安装安装python2.7.18, 勾选环境变量进行安装下载cocos2dx4.0并解压配置cocos2dx:运行cmd,进入…...
剑指 Offer 53 - I. 在排序数组中查找数字 I
原题链接 难度:easy\color{Green}{easy}easy 题目描述 统计一个数字在排序数组中出现的次数。 示例 1: 输入: nums [5,7,7,8,8,10], target 8 输出: 2示例 2: 输入: nums [5,7,7,8,8,10], target 6 输出: 0提示: 0<nums.length<1050 <…...
华为OD机试 - 删除指定目录(Python) | 机试题算法思路 【2023】
最近更新的博客 华为OD机试 - 热点网络统计 | 备考思路,刷题要点,答疑 【新解法】 华为OD机试 - 查找单入口空闲区域 | 备考思路,刷题要点,答疑 【新解法】 华为OD机试 - 好朋友 | 备考思路,刷题要点,答疑 【新解法】 华为OD机试 - 找出同班小朋友 | 备考思路,刷题要点…...
PowerShell Install Office 2021 Pro Plus Viso Professional
前言 微软Office在很长一段时间内都是最常用和最受欢迎的软件。从小型创业公司到大公司,它的使用比例相当。它可以很容易地从微软的官方网站下载。但是,微软只提供安装程序,而不提供完整的软件供下载。这些安装文件通常比较小。下载并运行后,安装的文件将从后端服务器安装M…...
KubeSphere实战
文章目录一、KubeSphere平台安装1、Kubernetes上安装KubeSphere1.1 安装docker1.2 安装Kubernetes1.3 前置环境之nfs存储1.4 前置环境之metrics-server1.5 安装KubeSphere2、Linux单节点部署KubeSphere3、Linux多节点部署KubeSphere(推荐)二、KubeSphere实战1、多租户实战2、中…...
Linux 简介
Linux 内核最初只是由芬兰人林纳斯托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。 Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。 …...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
