首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python当requests..compat.urljoin不包含访问方法时,预先添加一个访问方法

Python当requests..compat.urljoin不包含访问方法时,预先添加一个访问方法
EN

Stack Overflow用户
提问于 2019-02-26 01:46:04
回答 2查看 1.1K关注 0票数 0

下面是我尝试在https://前面添加URL的两种方法。出于某种原因,urljoin方法会产生奇怪的输出:

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

我看到的带有奇怪的三个/字符的输出是

代码语言:javascript
复制
Stringy way https://abc.def.com
urljoin     https:///abc.def.com

对于其他变体,我也得到了无用的结果:

代码语言:javascript
复制
print('urljoin #2 ', urljoin('https:/', host2))
print('urljoin #3 ', urljoin('https:', host2))
print('urljoin #4 ', urljoin('https', host2))

提供:

代码语言:javascript
复制
urljoin #2  https:///abc.def.com
urljoin #3  https:///abc.def.com
urljoin #4  abc.def.com

这是不是用错了函数呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-26 02:03:54

您可以使用urllib.parse.urlunsplit()来编写URL:

代码语言:javascript
复制
from urllib.parse import urlunsplit

print(urlunsplit(("https", "abc.def.com", "", "", "")))

结果:

代码语言:javascript
复制
https://abc.def.com

它接受一个元组作为输入,该元组与urlsplit()的输出匹配,该元组具有以下属性:

票数 1
EN

Stack Overflow用户

发布于 2019-02-26 02:01:58

urljoin函数通常用于将href锚附加到现有url。示例:

代码语言:javascript
复制
from requests.compat import urljoin
url = 'https://abc.def.com'
href = '364'
urljoin(url, href)

我得到了输出:-

代码语言:javascript
复制
'https://abc.def.com/364'

然而,如果我想用'https://‘’来完成我的url,我宁愿使用:-

代码语言:javascript
复制
from requests.compat import urljoin
url = 'abc.def.com'
host = ('https://'+ url)
print(host)

我得到的输出是:

代码语言:javascript
复制
https://abc.def.com

我希望这对你有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54871902

复制
相关文章

相似问题

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