需求:
遇到一个网站,psot异步获取数据。
但是data参数出现一个key多个value情况。
尝试有以下几种解决方法。
方法1:
直接post类型,然后直接浏览器复制view resource。就是urlencode的一个字符串。
就是get后缀的params类型。测试可行。
比如:
params = "offset=0&limit=10&tags%255B%255D=3&tagOperation=or&labelTags%5B%5D=190&labelTags%5B%5D=711&labelTags%5B%5D=5271&labelTagOperation=or&gridMoreSize=10"
response = requests.post(url, headers=headers,params=params, timeout=10)
由于工作原因,网站url补贴了。懂的自然懂,不懂得应该也不会看这篇文章了。
方法2:
使用list的payload,里面都是元组形式。测试也可行。
payload = [
("offset", "0"),
("limit","10"),
("tags[]", "3"),
("tagOperation", "or"),
("labelTags[]", "190"),
("labelTags[]", "711"),
("labelTags[]", "5271"),
("labelTagOperation", "or"),
("gridMoreSize", "10"),
]
response = requests.post(url, headers=headers,data=payload, timeout=10)
方法3:
这个是方法1和2的融合,就是把方法2的payload,使用urllib模块的urlencode转成params类型。然后按params形式传参。
但是还是直接方法2更方便。
payload = [
("offset", "0"),
("limit","10"),
("tags[]", "3"),
("tagOperation", "or"),
("labelTags[]", "190"),
("labelTags[]", "711"),
("labelTags[]", "5271"),
("labelTagOperation", "or"),
("gridMoreSize", "10"),
]
params = urlencode(payload)
response = requests.post(url, headers=headers,params=params, timeout=10)
好了,至此,问题解决。