如何防止python请求对我的URL进行百分比编码?

发布于 2021-01-29 19:02:41

我正在尝试使用python中的request.get()获取以下格式的URL:

http://api.example.com/export/?format=json&key=site:dummy+type:example+group:wheel

#!/usr/local/bin/python

import requests

print(requests.__versiom__)
url = 'http://api.example.com/export/'
payload = {'format': 'json', 'key': 'site:dummy+type:example+group:wheel'}
r = requests.get(url, params=payload)
print(r.url)

但是,URL得到了百分比编码,但没有得到预期的响应。

2.2.1
http://api.example.com/export/?key=site%3Adummy%2Btype%3Aexample%2Bgroup%3Awheel&format=json

如果我直接传递URL,则可以使用:

url = http://api.example.com/export/?format=json&key=site:dummy+type:example+group:wheel
r = requests.get(url)

是否可以通过某种方式以原始格式传递参数-无需百分比编码?

谢谢!

关注者
0
被浏览
164
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这不是一个好的解决方案,但您可以使用string

    r = requests.get(url, params='format=json&key=site:dummy+type:example+group:wheel')
    

    顺便说一句:

    payload = {'format': 'json', 'key': 'site:dummy+type:example+group:wheel'}
    
    payload_str = "&".join("%s=%s" % (k,v) for k,v in payload.items())
    # 'format=json&key=site:dummy+type:example+group:wheel'
    
    r = requests.get(url, params=payload_str)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看