📅  最后修改于: 2023-12-03 15:04:09.830000             🧑  作者: Mango
在编写 Python 程序时,你不可避免地需要处理 URL,而且在许多情况下,你需要将多个 URL(绝对或相对)组合在一起以形成完整的 URL。
Python 提供了一个内置的 urllib.parse 模块来处理 URL,其中包括 urllib.parse.urljoin() 方法,该方法可用于将任意数量的 URL 组合在一起以生成新的 URL。
urllib.parse.urljoin(base, url, allow_fragments=True)
假设我们有一个基本 URL 如下:
base_url = "https://example.com/path1/path2/"
现在我们想将不同的 URL 组合在一起以生成新的 URL。以下是一些示例:
如果我们要组合绝对 URL,则它将覆盖基本 URL:
url = "https://example.org/"
new_url = urllib.parse.urljoin(base_url, url)
print(new_url)
# Output: https://example.org/
如果我们要组合相对 URL,则它将添加到基本 URL 的末尾:
url = "../path3/index.html"
new_url = urllib.parse.urljoin(base_url, url)
print(new_url)
# Output: https://example.com/path1/path3/index.html
如果相对 URL 不以斜杆开头,则它将添加到基本 URL 的末尾(以斜杆分隔):
url = "path4/index.html"
new_url = urllib.parse.urljoin(base_url, url)
print(new_url)
# Output: https://example.com/path1/path2/path4/index.html
如果 URL 包含片段(以 "#" 开头),则该片段将保留在新 URL 中:
url = "../path3/index.html#header"
new_url = urllib.parse.urljoin(base_url, url)
print(new_url)
# Output: https://example.com/path1/path3/index.html#header
请注意,在这种情况下,allow_fragments 参数被设置为默认值 True。如果要删除片段,请将 allow_fragments 参数设置为 False:
url = "../path3/index.html#header"
new_url = urllib.parse.urljoin(base_url, url, allow_fragments=False)
print(new_url)
# Output: https://example.com/path1/path3/index.html
在这篇文章中,我们介绍了 Python 中的 urllib.parse.urljoin() 方法,并讨论了如何使用它将多个 URL 组合成一个完整的 URL。这个简单但功能强大的方法可以让你轻松地处理各种 URL 场景。