Python3使用requests获取网页并处理编码问题

Dylan
Dylan
发布时间:2026-10-11| 1人浏览过
原创

本文介绍在Python3中使用requests库获取网页内容时,如何正确处理编码问题。通过设置r.encoding或r.apparent_encoding属性,可以有效解决网页乱码问题,并演示了将网页内容保存为本地文件的完整流程。

理解响应编码属性

在使用Python的requests库获取网页时,了解响应对象的编码属性至关重要。主要涉及三个关键属性:

  • r.encoding:用于手动设置编码,可指定为任意字符串以处理特定编码
  • r.text:返回经过编码处理后的Unicode字符串数据
  • r.content:返回原始的bytes类型数据,未经编码转换

获取网页编码信息

首先需要通过requests获取网页响应,然后检查编码相关信息:

import requests
url = "https://www.xxx.net/html/gndy/dyzz/index.html"
r = requests.get(url)
# 获取响应头Content-Type的charset值,有的网站没有charset字段,就可能使用默认的 ISO-8859-1
print(r.encoding)
# apparent_encoding就是获取网站真实的编码
print(r.apparent_encoding)

这里需要注意,r.encoding的值可能来自HTTP响应头中的Content-Type字段。如果网站没有明确指定charset,requests可能会使用默认的ISO-8859-1编码。而r.apparent_encoding则是requests通过chardet库检测出的网站真实编码。

手动设置编码

如果检测到编码不正确,可以直接设置r.encoding属性来指定正确的编码方式:

r.encoding = 'utf-8'

完整示例:获取并保存网页

以下是一个完整的示例,展示了如何获取网页内容、处理编码并保存到本地文件:

import requests
url = 'https://www.xxx.net/html/gndy/dyzz/index.html'
r = requests.get(url)
r.encoding = r.apparent_encoding
html = r.text
with open('test.html','w',encoding='utf8') as f:
    f.write(html)

这个示例的关键步骤包括:

  1. 使用requests.get()获取网页响应
  2. 将r.encoding设置为r.apparent_encoding,确保使用正确的编码
  3. 通过r.text获取处理后的Unicode字符串
  4. 使用utf-8编码将内容写入本地文件
以上就是Python3使用requests获取网页并处理编码问题的详细内容,更多关于Python网页抓取的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。