合并cookie,提取json数据
发送的第3个请求需要前两个请求的cookie,需要对cookie进行合并
发送的请求数据来自于json数据中的某个键值。
这里是删除所有的对话主题目录,每一个目录有一个id,发起删除对话主题目录的请求时,需要遍历这个目录id, 把目录id作为请求参数传入进去
import requests
import json
Cookie = None
class HttpRequest:
def http_request(self, url, method, data=None, cookie=None):
res = None
try:
if method.upper() == "GET":
res = requests.get(url, data, cookies=cookie)
elif method.upper() == "POST":
res = requests.post(url, data, cookies=cookie)
else:
print("请输入正确参数")
except Exception as e:
print("请求报错了:{}".format(e))
raise e
return res
def get_dir(file, key, sub_key):
# 提取json数据的所有nodeId
# 需要编码,不然可能会报错
with open(file, "r", encoding="utf-8") as f:
json_str = f.read()
data = json.loads(json_str)
dir_list = []
for sub_dic in data[key]:
dir_id = sub_dic[sub_key]
dir_list.append(dir_id)
return dir_list
if __name__ == '__main__':
# 登录
login_url = "http://chat.rainbowred.com/login"
login_data = {"username": "15546355872",
"password": "123456",
"rememberCheck": "1",
"loginStatus": "1",
"rememberStatus": "1",
"autoLogin": "0",
"language": "zh"}
login_res = HttpRequest().http_request(login_url, "post", login_data)
print(login_res.json())
Cookie = login_res.cookies
print("登录后的cookie", Cookie)
# 选择公司
c_url = "http://chat.rainbowred.com/chc"
c_data = {"companyId": "1364"}
c_res = HttpRequest().http_request(c_url, "post", c_data, cookie=Cookie)
print(c_res.json())
print("选择公司后的cookie", c_res.cookies)
# 合并两次接口请求的cookie
Cookie = dict(Cookie, **c_res.cookies)
print("选择公司后的cookie2", Cookie)
file = r"C:\Users\acer-pc\Desktop\8_.json"
key = "children"
sub_key = "nodeId"
d_url = "http://tprofile.rainbowred.com/ctm/delete"
d_data = get_dir(file, key, sub_key)
send_data = {}
# 提取json数据
for data in d_data:
print(data)
send_data["nodeId"] = data
d_res = HttpRequest().http_request(d_url, "post", send_data, Cookie)
print(d_res.json())
如何获取json列表:
首先更新对话主题

抓取删除接口的请求参数:可以看到需要nodeId

更新对话主题后会更新对话主题版本,请求所有的对话主题列表

选中接口请求,右键可以保存响应body到本地,便于分析数据结构,看看应该如何获取所有的nodeId

json数据如图

合并cookie,提取json数据的更多相关文章
- jmeter之beanshell提取json数据
Jmeter BeanShell PostProcessor提取json数据 假设现有需求: 提取sample返回json数据中所有name字段对应的值,返回的json格式如下: {“body”:{“ ...
- Jmeter BeanShell PostProcessor提取json数据
需求:提取sample返回json数据中所有name字段值,返回的json格式如下: {“body”:{“apps”:[{“name”:”111”},{“name”:”222”}]}} jmeter中 ...
- 自动化测试 如何快速提取Json数据
Json作为一种轻量级的交换数据形式,由于其自身的一些优良特性比如包含有效信息多,易于阅读和解析. 使用Json的场景也很多,比如读取解析系列化的Json格式的数据,我们需要将一个Json的字符串解析 ...
- js提取JSON数据中需要的那部分数据
var data =[ { name: "程咬金",sex:"1",age:26 }, { name: "程才",sex:"0&q ...
- 利用es6解构赋值快速提取JSON数据;
直接上代码 { let JSONData = { title:'abc', test:[ { nums:5, name:'jobs' }, { nums:11, name:'bill' } ] } l ...
- 爬虫json数据的处理
在爬网页的过程中,最喜欢遇到的就是json数据接口,省了不少麻烦,但是json数据也有多种格式. 类型一:标准的json result = json.loads(html.text),将str转成py ...
- (数据科学学习手札125)在Python中操纵json数据的最佳方式
本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在日常使用Python的过程中,我们经常会 ...
- ASP.NET提取多层嵌套json数据的方法
本文实例讲述了ASP.NET利用第三方类库Newtonsoft.Json提取多层嵌套json数据的方法,具体例子如下. 假设需要提取的json字符串如下: {"name":&quo ...
- 服务器端json数据文件分割合并解决方案
问题引入 Json 是什么就不多说了,本文把Json理解成一种协议. 印象之中,Json貌似是前端的专属,其实不然,服务器端组织数据,依然可以用Json协议. 比如说,某公司有一套测评题目(基于Jso ...
随机推荐
- Exit of “> ” mode in Unix shell
https://unix.stackexchange.com/questions/118209/exit-of-mode-in-unix-shell ^D will only work if a pr ...
- Ubuntu--- 安装VMware 报错 Build enviroment error!
今天从 Ubuntu 安装 VMware 下载并安装过程都很顺利,但是在启动过程中报错误,所以总结如下: 报错原因:VMware 第一次启动需要编译一些模块,但是刚开始并没有安装 gcc 所以便报无法 ...
- 由AnnotatedElementUtils延伸的一些所思所想
这篇博客的两个主题: spring的AnnotatedElementUtils 个人源码阅读方法论分享 为什么要分享AnnotatedElementUtils这个类呢,这个类看起来就是一个工具类,听起 ...
- 频率类组件-认证规图分析-JWT认证-drf-jwt插件
频率类源码 # 1)APIView的dispath方法中的 self.initial(request, *args, **kwargs) 点进去 # 2)self.check_throttles(re ...
- Promoter complex|转录组水平RNA的复杂度|
生命组学 Promoter complex Tata box识别位点 Enhancer加入之后增强转录 不确定性与确定性之间的关系,原因中存在这不确定性,但是结果表达又是确定的.因为promoter的 ...
- 12. docker 网络 docker network (docker 网络)
1. 环境准备 编写 Vagrantfile 为 # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.require_version "> ...
- 第一行代码近期bug及解决
Android学习笔记(5)----启动 Theme.Dialog 主题的Activity时程序崩溃的解决办法https://www.cnblogs.com/dongling/p/6476308.ht ...
- ES6之模块化
本文介绍ES6实现模块化的方法:使用import和export. 导入的时候需不需要加大括号的判断:1.当用export default people导出时,就用 import people 导入(不 ...
- jmlr论文下载
下载脚本 #!/bin/bash # down_jmlr.sh ver=$1 wget http://www.jmlr.org/papers/$ver/ -O index.htm cat index. ...
- c语言中fflush的运用为什么没有效果呢,测试平台linux
/************************************************************************* > File Name: clearing. ...