📜  节点 | URL.format API(1)

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

节点 | URL.format API

介绍

在 Python 中,可以通过 urllib.request 库来访问 HTTP 和 HTTPS 请求。当访问 URL 时,URL 通常被分解为不同的部分,例如协议、域名、端口和路径。分别处理这些部分会变得很麻烦,因此 Python 提供了 urllib.parse 模块来方便地解析和构建 URL。urllib.parse.urlparse 函数用于解析 URL 字符串,而 urllib.parse.urlunparse 函数则用于反向操作。

在使用 urllib.parse.urlparse 解析 URL 字符串后,我们可以使用 urlparse 函数的属性获取 URL 的不同部分。另外,也可以使用 urllib.parse.urlunparse 构建 URL 字符串。在构建 URL 时,可以使用 str.format 方法, 以动态添加变量到 URL 中。

代码示例
解析 URL
from urllib.parse import urlparse

url = 'https://www.baidu.com/s?wd=urlparse&rsv_spt=1&rsv_iqid=0x889f142b000aa21c&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8'

result = urlparse(url)
print('Scheme:', result.scheme)
print('Netloc:', result.netloc)
print('Path:  ', result.path)

输出:

Scheme: https
Netloc: www.baidu.com
Path:   /s
构建 URL
from urllib.parse import urlunparse

scheme = 'https'
netloc = 'www.baidu.com'
path = 's'
query = 'wd=urlparse&rsv_spt=1&rsv_iqid=0x889f142b000aa21c&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8'

url = urlunparse((scheme, netloc, path, '', query, ''))
print(url)

输出:

https://www.baidu.com/s?wd=urlparse&rsv_spt=1&rsv_iqid=0x889f142b000aa21c&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8
动态添加变量到 URL
from urllib.parse import urlunparse

scheme = 'https'
netloc = 'www.baidu.com'
path = 's'
wd = 'urlparse'
query_params = {
    'rsv_spt': '1',
    'rsv_iqid': '0x889f142b000aa21c',
    'issp': '1',
    'f': '8',
    'rsv_bp': '1',
    'rsv_idx': '2',
    'ie': 'utf-8'
}

query = '&'.join([f'{key}={value}' for key, value in query_params.items()])
url = urlunparse((scheme, netloc, path, '', query, ''))

print(url.format(wd=wd))

输出:

https://www.baidu.com/s?wd=urlparse&rsv_spt=1&rsv_iqid=0x889f142b000aa21c&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8