Python3 urllib¶
概念与用途¶
urllib 是标准库 URL 与 HTTP 工具集合,包括 request、parse、error 和 robotparser。它无需第三方依赖,适合简单请求和 URL 编解码。
核心 API¶
urlencode() 构造查询串,urlparse() 拆分 URL,urlopen() 发起请求。请求必须设置超时,并通过上下文管理器关闭响应。
from urllib.parse import urlencode, urlparse, parse_qs
query = urlencode({"q": "Python 教程", "page": 1})
url = f"https://example.com/search?{query}"
parsed = urlparse(url)
print(parsed.scheme, parsed.netloc, parse_qs(parsed.query))
模块分工¶
| 模块 | 作用 | 边界 |
|---|---|---|
urllib.parse |
URL 解析与编码 | 不验证目标安全性 |
urllib.request |
HTTP 请求 | 显式超时和关闭响应 |
urllib.error |
HTTP/URL 异常 | 捕获具体类型 |
robotparser |
解析 robots.txt | 不是法律授权证明 |
示例:无网络请求对象¶
from urllib.request import Request
request = Request(
"https://example.com/api",
headers={"User-Agent": "PythonTutorial/1.0"},
method="GET",
)
print(request.full_url, request.method, request.headers)
urllib 是标准库,无需安装。真实调用使用 with urlopen(request, timeout=10) as response:,并限制读取字节数;超时只约束相关阶段,不代表总业务截止时间。
常见错误与安全注意¶
- 服务器端请求用户 URL 时要防 SSRF,限制协议、目标主机和重定向。
HTTPError既是异常也是响应对象,应按状态码读取有限错误体。- URL 编码不等于 HTML 或 SQL 转义,必须在对应上下文使用正确机制。