合并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数据如图

猜你喜欢

转载自www.cnblogs.com/come202011/p/12296889.html
今日推荐