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()