下面是我尝试在https://前面添加URL的两种方法。出于某种原因,urljoin方法会产生奇怪的输出:
from requests.compat import urljoin
host = 'abc.def.com'
host2 = host
# brute-force string method
if not host.startswith('https://'):
host = 'https://' + host # Add schema
if host.endswith('/'):
host = host[:-1] # Strip /
print('Stringy way', host)
# nice library method? Doesn't quite work
print('urljoin ', urljoin('https://', host2))我看到的带有奇怪的三个/字符的输出是
Stringy way https://abc.def.com
urljoin https:///abc.def.com对于其他变体,我也得到了无用的结果:
print('urljoin #2 ', urljoin('https:/', host2))
print('urljoin #3 ', urljoin('https:', host2))
print('urljoin #4 ', urljoin('https', host2))提供:
urljoin #2 https:///abc.def.com
urljoin #3 https:///abc.def.com
urljoin #4 abc.def.com这是不是用错了函数呢?
发布于 2019-02-26 02:03:54
您可以使用urllib.parse.urlunsplit()来编写URL:
from urllib.parse import urlunsplit
print(urlunsplit(("https", "abc.def.com", "", "", "")))结果:
https://abc.def.com它接受一个元组作为输入,该元组与urlsplit()的输出匹配,该元组具有以下属性:

发布于 2019-02-26 02:01:58
urljoin函数通常用于将href锚附加到现有url。示例:
from requests.compat import urljoin
url = 'https://abc.def.com'
href = '364'
urljoin(url, href)我得到了输出:-
'https://abc.def.com/364'然而,如果我想用'https://‘’来完成我的url,我宁愿使用:-
from requests.compat import urljoin
url = 'abc.def.com'
host = ('https://'+ url)
print(host)我得到的输出是:
https://abc.def.com我希望这对你有所帮助。
https://stackoverflow.com/questions/54871902
复制相似问题