假设给了我一个URL。 它可能已经具有GET参数(例如http://example.com/search?q=question),也可能没有(例如http://example.com/)。
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。
{'lang':'en','tag':'python'}
http://example.com/search?q=question&lang=en&tag=python
http://example.com/search?lang=en&tag=python
有什么标准的方法可以做到这一点吗?
urllib和urlparse模块有一些怪癖。这是一个工作示例:
urllib
urlparse
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之前,我们可以尝试修改其数据。
ParseResult
urlparse()
list