小编典典

在Python中将参数添加到给定的URL

python

假设给了我一个URL。
它可能已经具有GET参数(例如http://example.com/search?q=question),也可能没有(例如http://example.com/)。

现在我需要向其中添加一些参数{'lang':'en','tag':'python'}。在第一种情况下,我将拥有,http://example.com/search?q=question&lang=en&tag=python而在第二种情况下-
http://example.com/search?lang=en&tag=python

有什么标准的方法可以做到这一点吗?


阅读 278

收藏
2020-12-20

共1个答案

小编典典

urlliburlparse模块有一些怪癖。这是一个工作示例:

try:
    import urlparse
    from urllib import urlencode
except: # For Python 3
    import urllib.parse as urlparse
    from urllib.parse import urlencode

url = "http://stackoverflow.com/search?q=question"
params = {'lang':'en','tag':'python'}

url_parts = list(urlparse.urlparse(url))
query = dict(urlparse.parse_qsl(url_parts[4]))
query.update(params)

url_parts[4] = urlencode(query)

print(urlparse.urlunparse(url_parts))

ParseResult,结果urlparse()是只读的,我们需要把它转换成list之前,我们可以尝试修改其数据。

2020-12-20