发送的第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. 移植zlib

    平台说明 开发平台:Ubuntu12.04 编 译器:arm-linux-gcc version 4.4.4 (4.4.4_09.06.2010) Zlib源码包:zlib-1.2.11.tar.gz ...

  2. python装饰器类

    from functools import wraps class logit(object): def __init__(self, logger): self.logger = logger de ...

  3. 编程作业2.2:Regularized Logistic regression

    题目 在本部分的练习中,您将使用正则化的Logistic回归模型来预测一个制造工厂的微芯片是否通过质量保证(QA),在QA过程中,每个芯片都会经过各种测试来保证它可以正常运行.假设你是这个工厂的产品经 ...

  4. Maven--Maven 入门

    1.POM <?xml version="1.0" encoding="utf-8" ?> <project xmlns="http ...

  5. session和token区别

    分布式系统认证/授权目前分布式系统存在两种常用的认证授权方式:分布式session和token 1.session的概念 session中存放登录用户的个人信息,创建session时,随机生成一个se ...

  6. python_pycharm控制台输出带颜色

    一.书写格式: 设置颜色开始:\033[显示方式;前景色;背景色m] 结束:\033[0m 二.颜色参数: 前景色 背景色 颜色 ----------------------------------- ...

  7. Linux读取目录文件

    1.opendir与readdir函数 (1).opendir打开一个目录后得到一个DIR类型的的指针给readdir使用. (2).readdir函数调用一次后就会返回一个struct dirent ...

  8. list循环 字典循环 字符串常用方法

    list = ['xiaoli','xiaohua','huali']user = {'zhang':'123','lin':'321','chen':'222'}#list循环for stu in ...

  9. kaggle——分销商产品未来销售情况预测

    分销商产品未来销售情况预测 介绍 前面的几个实验中,都是根据提供的数据特征来构建模型,也就是说,数据集中会含有许多的特征列.本次将会介绍如何去处理另一种常见的数据,即时间序列数据.具体来说就是如何根据 ...

  10. ios 获取app版本号

    let infoDictionary = Bundle.main.infoDictionary!let appversion = infoDictionary["CFBundleShortV ...