在 Python 中加入一个基本 URL 和另一个 URL

在 Python 中加入一个基本 URL 和另一个 URL

Join a base URL with another URLs in Python

使用模块中的urljoin方法urllib.parse将基本 URL 与另一个 URL 连接起来,例如result = urljoin(base_url, path). urljoin方法通过将基本 URL 与另一个 URL 组合来构造完整(绝对)URL。

主程序
from urllib.parse import urljoin base_url = 'https://example.com' path = 'images/static/cat.jpg' result = urljoin(base_url, path) # 👇️ https://example.com/images/static/cat.jpg print(result) # 👇️ /global/images/static/dog.png print(urljoin('/global/images/', 'static/dog.png'))

如果您有多个 URL 组件,请posixpath在将它们传递给urljoin()方法之前使用模块将它们连接起来。

主程序
import posixpath from urllib.parse import urljoin base_url = 'https://example.com' path_1 = 'images' path_2 = 'static' path_3 = 'cat.jpg' path = posixpath.join(path_1, path_2, path_3) print(path) # 👉️ 'images/static/cat.jpg' result = urljoin(base_url, path) # 👇️ https://example.com/images/static/cat.jpg print(result)

urllib.parse.urljoin

方法将一个基本 URL 和另一个 URL 作为参数,并通过组合它们来构造一个完整的(绝对)URL

您还可以使用该urljoin方法来加入 URL 路径组件。

主程序
from urllib.parse import urljoin # 👇️ /global/images/static/dog.png print(urljoin('/global/images/', 'static/dog.png'))

确保您获得的输出符合您的预期,因为在urljoin处理不以正斜杠结尾的 URL 组件时,该方法可能会有点混乱/

这是一个例子。

主程序
from urllib.parse import urljoin # 👇️ /global/static/dog.png print(urljoin('/global/images', 'static/dog.png'))

images请注意,该方法在加入第二个组件之前从第一个组件中剥离。

当第一个组件以正斜杠结尾时,该方法的行为符合预期。

主程序
from urllib.parse import urljoin # 👇️ /global/images/static/dog.png print(urljoin('/global/images/', 'static/dog.png'))

如果第二个组件以正斜杠开头,您可能还会注意到令人困惑的行为。

主程序
from urllib.parse import urljoin # 👇️ /static/dog.png print(urljoin('/global/images', '/static/dog.png'))

当第二个组件以正斜杠开始时,假定它从根开始。

posixpath.join()方法更具可预测性,也可用于连接 URL 路径组件。

主程序
import posixpath # 👇️ /global/images/static/dog.png print(posixpath.join('/global/images', 'static/dog.png')) # 👇️ /global/images/static/dog.png print(posixpath.join('/global/images/', 'static/dog.png')) # 👇️ /static/dog.png print(posixpath.join('/global/images', '/static/dog.png'))

posixpath.join方法也可以传递超过 2 个路径。

主程序
import posixpath # 👇️ /global/images/static/dog.png print(posixpath.join('/global', 'images', 'static', 'dog.png'))

发表评论