我正在尝试使用Python 3的urllib.parse
连接基本URL url1
和相对路径url2
,但是没有得到想要的结果。另外,我尝试使用os.path.join
(不是用于此目的)和简单的string concatenation using .format()
:
import os.path
import urllib.parse
url1 = "www.sampleurl.tld"
url2 = "/some/path/here"
print(urllib.parse.urljoin(url1, url2))
# --> "/some/path/here"
print(os.path.join(url1, url2))
# --> "/some/path/here"
print("{}{}".format(url1, url2))
# --> "www.sampleurl.tld/some/path/here" (desired output)
简单字符串连接返回所需的绝对URL。但是,这种方法似乎很幼稚,也不是很优雅,因为它假定url2
以/
开头,而事实并非如此。可以肯定的是,我可以通过调用url2.startswith('/')
来进行检查并将字符串连接更改为"{}/{}".format(url1, url2)
以提供所需的灵活性,但是我仍然想知道如何通过{{3 }}。
答案 0 :(得分:0)
urljoin期望第一个参数baseurl
包含架构。
因此,在您的https://
字符串中添加http://
或url1
即可。
import urllib.parse
url1 = "https://www.sampleurl.tld"
url2 = "/some/path/here"
print(urllib.parse.urljoin(url1, url2))
# --> "https://www.sampleurl.tld/some/path/here"
答案 1 :(得分:0)
import urllib.parse
url1 = 'www.sampleurl.tld'
url2 = '/some/path/here'
urlString = urllib.parse.ParseResult(scheme='https', netloc=url1, path=url2, params='', query='', fragment='')
urllib.parse.urlunparse(urlString)
您可以尝试一下。该URL不是从列表创建的,而是从ParseResult类创建的。