URL 处理库
Python 提供了多个库用于处理 URL,常用的有 urllib
、requests
和 urlparse
(Python 3 中为 urllib.parse
)。以下是这些库的主要功能和用法。
urllib 模块
urllib
是 Python 的标准库之一,包含多个子模块用于处理 URL 相关操作:
from urllib.request import urlopen
from urllib.parse import urlparse, urljoin
# 打开 URL 并读取内容
response = urlopen('https://www.example.com')
content = response.read()
# 解析 URL
parsed_url = urlparse('https://www.example.com/path?query=123')
print(parsed_url.scheme) # 'https'
print(parsed_url.netloc) # 'www.example.com'
print(parsed_url.path) # '/path'
print(parsed_url.query) # 'query=123'
# 拼接 URL
base_url = 'https://www.example.com/path'
relative_url = 'subpath'
full_url = urljoin(base_url, relative_url)
print(full_url) # 'https://www.example.com/subpath'
requests 库
requests
是第三方库,提供了更简洁的 API 用于发送 HTTP 请求和处理 URL:
import requests
# 发送 GET 请求
response = requests.get('https://www.example.com')
print(response.status_code) # 200
print(response.text) # HTML 内容
# 发送 POST 请求
data = {'key': 'value'}
response = requests.post('https://www.example.com/post', data=data)
# 处理 URL 参数
params = {'query': 'python', 'page': 1}
response = requests.get('https://www.example.com/search', params=params)
print(response.url) # 'https://www.example.com/search?query=python&page=1'
urlparse 和 urljoin
urlparse
和 urljoin
是 urllib.parse
模块中的函数,专门用于解析和拼接 URL:
from urllib.parse import urlparse, urljoin
# 解析 URL
url = 'https://www.example.com:8080/path/to/page?query=python#section'
parsed = urlparse(url)
print(parsed.scheme) # 'https'
print(parsed.netloc) # 'www.example.com:8080'
print(parsed.path) # '/path/to/page'
print(parsed.query) # 'query=python'
print(parsed.fragment) # 'section'
# 拼接 URL
base = 'https://www.example.com/path/'
relative = 'subpath'
full_url = urljoin(base, relative)
print(full_url) # 'https://www.example.com/path/subpath'
编码和解码 URL
URL 中的特殊字符需要进行编码和解码处理:
from urllib.parse import quote, unquote, urlencode
# 编码 URL
encoded = quote('python url example')
print(encoded) # 'python%20url%20example'
# 解码 URL
decoded = unquote('python%20url%20example')
print(decoded) # 'python url example'
# 编码查询参数
params = {'q': 'python url', 'page': 1}
encoded_params = urlencode(params)
print(encoded_params) # 'q=python+url&page=1'
总结
Python 提供了多种工具用于处理 URL,包括标准库 urllib
和第三方库 requests
。urllib.parse
模块适合解析和拼接 URL,而 requests
更适合发送 HTTP 请求和处理响应。根据具体需求选择合适的工具可以更高效地完成 URL 相关操作。