如何使用查询字符串正确构建网址?
例如,从一个网站,我刮取了值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
如何确保获得正确的网址?
答案 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'