首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中向给定的URL添加参数

在Python中向给定的URL添加参数
EN

Stack Overflow用户
提问于 2010-03-24 17:06:21
回答 13查看 147K关注 0票数 147

假设我得到了一个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

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

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2010-03-24 17:23:16

urlliburlparse模块有一些奇怪的地方。下面是一个有效的示例:

代码语言:javascript
复制
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))

ParseResulturlparse()is read-only的结果,我们需要将它转换成list,然后才能尝试修改它的数据。

票数 201
EN

Stack Overflow用户

发布于 2010-03-24 17:15:15

如果字符串可以包含任意数据(例如,需要对与号、斜杠等字符进行编码),则需要使用URL编码。

查看urllib.urlencode:

代码语言:javascript
复制
>>> import urllib
>>> urllib.urlencode({'lang':'en','tag':'python'})
'lang=en&tag=python'

在python3中:

代码语言:javascript
复制
from urllib import parse
parse.urlencode({'lang':'en','tag':'python'})
票数 49
EN

Stack Overflow用户

发布于 2018-04-22 00:40:26

外包给经过战斗考验的requests library

这就是我要做的:

代码语言:javascript
复制
from requests.models import PreparedRequest
url = 'http://example.com/search?q=question'
params = {'lang':'en','tag':'python'}
req = PreparedRequest()
req.prepare_url(url, params)
print(req.url)
票数 45
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2506379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档