发送的第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数据的更多相关文章

  1. jmeter之beanshell提取json数据

    Jmeter BeanShell PostProcessor提取json数据 假设现有需求: 提取sample返回json数据中所有name字段对应的值,返回的json格式如下: {“body”:{“ ...

  2. Jmeter BeanShell PostProcessor提取json数据

    需求:提取sample返回json数据中所有name字段值,返回的json格式如下: {“body”:{“apps”:[{“name”:”111”},{“name”:”222”}]}} jmeter中 ...

  3. 自动化测试 如何快速提取Json数据

    Json作为一种轻量级的交换数据形式,由于其自身的一些优良特性比如包含有效信息多,易于阅读和解析. 使用Json的场景也很多,比如读取解析系列化的Json格式的数据,我们需要将一个Json的字符串解析 ...

  4. js提取JSON数据中需要的那部分数据

    var data =[ { name: "程咬金",sex:"1",age:26 }, { name: "程才",sex:"0&q ...

  5. 利用es6解构赋值快速提取JSON数据;

    直接上代码 { let JSONData = { title:'abc', test:[ { nums:5, name:'jobs' }, { nums:11, name:'bill' } ] } l ...

  6. 爬虫json数据的处理

    在爬网页的过程中,最喜欢遇到的就是json数据接口,省了不少麻烦,但是json数据也有多种格式. 类型一:标准的json result = json.loads(html.text),将str转成py ...

  7. (数据科学学习手札125)在Python中操纵json数据的最佳方式

    本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在日常使用Python的过程中,我们经常会 ...

  8. ASP.NET提取多层嵌套json数据的方法

    本文实例讲述了ASP.NET利用第三方类库Newtonsoft.Json提取多层嵌套json数据的方法,具体例子如下. 假设需要提取的json字符串如下: {"name":&quo ...

  9. 服务器端json数据文件分割合并解决方案

    问题引入 Json 是什么就不多说了,本文把Json理解成一种协议. 印象之中,Json貌似是前端的专属,其实不然,服务器端组织数据,依然可以用Json协议. 比如说,某公司有一套测评题目(基于Jso ...

随机推荐

  1. mysql my.ini 性能调优

    MYSQL服务器my.cnf配置文档详解 硬件:内存16G [client] port = 3306 socket = /data/3306/mysql.sock [mysql] no-auto-re ...

  2. 黑马_13 Spring Boot:01.spring boot 介绍&&02.spring boot 入门

    13 Spring Boot: 01.spring boot 介绍&&02.spring boot 入门 04.spring boot 配置文件 SpringBoot基础 1.1 原有 ...

  3. E - Two Arithmetic Progressions(CodeForces - 710D)(拓展中国剩余定理)

    You are given two arithmetic progressions: a1k + b1 and a2l + b2. Find the number of integers x such ...

  4. day67-CSS字体属性、文字属性、背景属性、css盒子模型

    1. 字体属性 1.1 文字字体:font-family可以把多个字体名称作为一个“回退”系统来保存.如果浏览器不支持第一个字体,则会尝试下一个.浏览器会使用它可识别的第一个值. * {font-fa ...

  5. Akka Typed系列:协议&行为

    引言 2019年11月6号LightBend公司发布了AKKA 2.6版本,带来了类型安全的actor,新的Akka Cluster底层通信设施——Artery,带来了更好的稳定性,使用Jackson ...

  6. ios ktvhttpcache 音视频缓存插件使用

    1.PodFile 文件增加 pod 'KTVHTTPCache',  '~> 2.0.0' 2.在终端 需要先cd到podfile文件所在目录  执行pod install 3.在header ...

  7. 简单总结------redis

    一.Redis 是一个基于内存的高性能key-value数据库. 二.端口 6379 三.特点: Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在 ...

  8. SQL注入常用函数(注入小白的学习笔记)

    在盲注的情况下,往往需要一个一个字符的去猜解,即过程中需要截取字符串 在这里整理了一下一些常用函数 由于现阶段学习不够深入,整理分类不清楚具体,不过博主会慢慢进行完善 user() 查询当前数据库用户 ...

  9. 讯飞语音的中的bug用户校验失败

    用户校验失败:原因是目录没有复制粘贴正确. 下面是刚刚下载的SDK目录: 下面的是自己Android工程中的目录:注意复制粘贴的文件路径要正确

  10. 系统学习Javaweb11----综合案例1

    学习内容: 1.综合案例-需求说明 2.综合案例-需求分析 3.综合案例-需求实现-网页顶部部分 4.案例-需求实现-网页导航条 5.综合案例-需求实现-网页主体部分 6.综合案例-需求实现-网页主体 ...