📜  python url join - Python (1)

📅  最后修改于: 2023-12-03 15:04:09.830000             🧑  作者: Mango

Python URL Join

在编写 Python 程序时,你不可避免地需要处理 URL,而且在许多情况下,你需要将多个 URL(绝对或相对)组合在一起以形成完整的 URL。

Python 提供了一个内置的 urllib.parse 模块来处理 URL,其中包括 urllib.parse.urljoin() 方法,该方法可用于将任意数量的 URL 组合在一起以生成新的 URL。

语法
urllib.parse.urljoin(base, url, allow_fragments=True)
  • base: 必须是绝对 URL,也可以是相对 URL。
  • url: 要组合的 URL。可以是绝对 URL 或相对 URL。
  • allow_fragments: 是否允许 "#" 片段在 URL 中出现。默认为 True。
示例

假设我们有一个基本 URL 如下:

base_url = "https://example.com/path1/path2/"

现在我们想将不同的 URL 组合在一起以生成新的 URL。以下是一些示例:

1. 组合绝对 URL

如果我们要组合绝对 URL,则它将覆盖基本 URL:

url = "https://example.org/"
new_url = urllib.parse.urljoin(base_url, url)
print(new_url)
# Output: https://example.org/
2. 组合相对 URL

如果我们要组合相对 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
3. 组合不以斜杆开头的相对 URL

如果相对 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
4. 组合带有片段的 URL

如果 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 场景。