中文网页爬取的编码一致性保障:r.encoding = r.apparent_encoding的原理与实践
r.encoding = r.apparent_encoding 是 Python 爬虫中
解决网页乱码的核心操作(
r 通常是
requests 请求返回的响应对象),尤其在爬取中文网站(如政府官网、行业平台、老旧站点等)时,能有效避免爬取的内容出现“乱码”“方块字”等问题。
一、先明确核心作用
这行代码的核心目的是:让响应内容使用“真实的字符编码”解码,而非网站声明的编码,最终保证爬取的中文内容正常显示,不会乱码。
二、拆解 encoding 和 apparent_encoding 的区别
要理解这行代码,先搞懂响应对象的两个关键属性:
| 属性 | 含义 | 可能的问题 |
|---|---|---|
r.encoding |
网站声明的编码(从响应头 Content-Type 中提取,比如 Content-Type: text/html; charset=utf-8) |
很多网站会“声明错误的编码”(比如实际是 gb2312,却声明 utf-8),直接用这个编码解码会导致乱码 |
r.apparent_encoding |
requests 基于响应内容本身分析出的“真实编码”(比如通过字符的字节特征判断是 gb2312 还是 |
1万+



被折叠的 条评论
为什么被折叠?



