使用查询字符串构造URL

时间:2014-12-18 01:02:09

标签: python url

如何使用查询字符串正确构建网址?

例如,从一个网站,我刮取了值www.abc.com/SomethingHere?x=1&y=2但是,我得到的值是www.abc.com/SomethingHere?x=1&y=2,有时在最后我不明白是%xx。使用这些修改过的字符串发出的请求失败(但如果我手动删除放大器和百分比wierdness,则可以)。这也让我害怕只用www.abc.com/SomethingHere?x=1&y=2&z=3

添加更多查询参数

如何确保获得正确的网址?

2 个答案:

答案 0 :(得分:2)

分两步完成:

import urllib

# first parse the url
>>> parsed = urllib.parse.urlparse('www.abc.com/SomethingHere?x=1&y=2')
>>> parsed
ParseResult(scheme='', netloc='', path='www.abc.com/SomethingHere', params='', query='x=1&y=2', fragment='')

# the parse the query string component (into a dictionary)
>>> q = parsed.query
>>> urllib.parse.parse_qs(q)
{'y': ['2'], 'x': ['1']}

答案 1 :(得分:0)

您可以在python(here)中查看urlparse。在您的查询中调用urlparse,我们得到类似的内容:

urlparse('www.abc.com/SomethingHere?x=1&y=2&z=3')
Output: ParseResult(scheme='', netloc='', path='www.abc.com/SomethingHere', params='', query='x=1&y=2&z=3%%xx', fragment='')

要修改查询参数,您可以进一步使用urljoin,如下所示:

urljoin('www.abc.com/SomethingHere?x=1&y=2&z=3%%xx', '?x=2')
Output: 'www.abc.com/SomethingHere?x=2'