📅  最后修改于: 2023-12-03 15:41:25.464000             🧑  作者: Mango
在 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 中。
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
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
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