你不能使用这个请求;如果为参数传递Python结构,则库会构建此类URL,但不提供任何解析它们的工具.这不是该项目的目标.
坚持使用urllib.parse方法解析参数.获得字典或键值元组列表后,只需将其传递给再次构建URL的请求:
try:
# Python 3
from urllib.parse import urlparse, parse_qs
except ImportError:
# Python 2
from urlparse import urlparse, parse_qs
o = urlparse(url)
query = parse_qs(o.query)
# extract the URL without query parameters
url = o._replace(query=None).geturl()
if 'token' in query:
query['token'] = 'NEW_TOKEN'
requests.get(url, params=query)
您可以在Python 2和3中同时获取urlparse和parse_qs函数,如果出现异常,您只需调整导入位置即可.
在Python 3上演示(没有导入异常保护)来演示已构建的URL:
>>> from urllib.parse import urlparse, parse_qs
>>> url = "http://httpbin.org/get?token=TOKEN_TO_REPLACE¶m2=c"
>>> o = urlpar