为什么urlunparse在使用方案后会返回额外的斜杠?

时间:2019-05-21 16:27:57

标签: python-3.x

我需要为没有网址的网址添加一个方案。我想使用以下代码:

from urllib.parse import urlparse, urlunparse

url = 'example.com'
parsed = urlparse(url)
parsed = parsed._replace(scheme='https')
new_url = urlunparse(parsed)
print(new_url)

代替此:

https://example.com

脚本正在返回以下内容:

https:///example.com

如果我尝试这样获取网址,则会引发错误:

requests.get('https:///example.com')

为什么会这样,我该怎么办?

我正在使用:

Windows 10
Python 3.6.1
Anaconda 4.4.0

1 个答案:

答案 0 :(得分:1)

将初始字符串解析为路径组件,因为没有方案表明该字符串是主机:

urlparse('example.com')
# ParseResult(scheme='', netloc='', path='example.com', params='', query='', fragment='')

也许添加一个方案来使它明确:

urlparse('http://example.com')
# ParseResult(scheme='http', netloc='example.com', path='', params='', query='', fragment='')