python get请求传array数组

前言

使用传统的http发get请求时,如果传参为array数组,参数名称为a时,可以这样传值a=1&a=2&a=3,但是当只有一个时,这种方式就不合理了。

get请求还有另外一种方式传array数组,在参数名称后面加个[],如:a[]=1,2,3

参数名称一样

如果抓包看到是这种格式:http://www.example.com/?a=1&a=2&a=3

平常传参是字典键值对方式,这里key都一样了,python里面dict是不能有重复的,所以对于python代码可以这样写

import requests
url="http://www.example.com"
params=[
    ["a","1"],
    ["a","2"],
    ["a","3"]
]
r=requests.get(url,params=params)
print(r.url)
print(r.text)

 

 get参数传array数组

如果get请求的参数直接是传的array数组,如抓包看到是这种格式:http://www.example.com/?a[]=1,2,3

 

import requests
from urllib.parse import unquote
url="http://www.example.com"
params={"a[]":"1,2,3"}
 
r=requests.get(url,params=params)
print(r.url)
print(unquote(r.url))
print(r.text) 

 

 

也有可能这种格式          ?group[]=out&group[]=in

params = []
for k, v in args.items():
    if isinstance(v, list):
        for i in v:
            params.append([k + '[]', i])
    else:
        params.append([k, v])
res = requests.get(url, params=params, headers=headers)
ret = res.json()

 

posted @ 2022-11-09 02:40  醒日是归时  阅读(220)  评论(0编辑  收藏  举报