python爬虫遇到中文乱码问题(ISO-8859-1)

本文介绍了在Python爬虫中遇到的ISO-8859-1编码导致的中文乱码问题及解决方案。通过检查响应编码并进行适当的编码解码转换,如从ISO-8859-1转为GBK,可以成功解决乱码,确保数据的正确读取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python爬虫遇到中文乱码(ISO-8859-1)

直接入正题,今天爬虫遇到中文乱码问题,具体大概如下:

ÕбêÈË»òÆäÕбê´úÀí»ú¹¹Ó¦µ±¶ÔÆäÌṩµÄÕб깫¸æµÄÕæÊµÐÔ¡¢×¼È·ÐÔ¡¢ºÏ·¨ÐÔ¸ºÔð¡£(这种的字符)

找问题所在,首先查看response的编码问题

response = request.get(url,headers)
print(response.encoding)

输出内容:

这就好办了,直接编码解码(使用utf-8会出现部分字节问题)

response = requests.get(url,headers).text
content = response.encode("iso-8859-1").decode('gbk')

### 解决 Python 网页爬虫中的中文乱码问题 #### 1. 使用 `requests` 库获取网页内容并处理编码 为了防止因默认编码设置不当而导致的乱码现象,在使用 `requests.get()` 方法时可以先通过 `.content` 获取原始字节数据,再手动指定解码方式: ```python import requests url = "http://example.com" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', } response = requests.get(url, headers=headers) # 尝试检测页面的真实编码 if response.encoding == 'ISO-8859-1': encodings = ['utf-8', 'gb2312'] for encoding in encodings: try: content = response.content.decode(encoding) break except UnicodeDecodeError: continue else: content = response.text ``` 此段代码尝试识别服务器返回的实际编码格式,并优先考虑常见的 UTF-8 或 GBK 编码[^1]。 #### 2. 处理特定类型的压缩算法(如 Brotli) 某些现代网站可能会采用更高效的压缩技术来减少传输的数据量。如果遇到 `'Content-Encoding': 'br'` 这样的情况,则需要引入额外的支持库来进行解压操作: ```python import brotli key = 'Content-Encoding' if key in response.headers and response.headers[key] == 'br': decompressed_data = brotli.decompress(response.content).decode('utf-8') else: decompressed_data = response.text ``` 这段逻辑能够有效应对由 Brotli 压缩引起的潜在乱码问题[^3]。 #### 3. 利用 BeautifulSoup 正确解析 HTML 文档 在创建 Beautiful Soup 对象时显式指明文档的编码有助于避免不必要的麻烦: ```python from bs4 import BeautifulSoup soup = BeautifulSoup(content, features="html.parser", from_encoding='utf-8') print(soup.prettify()) ``` 这里特别强调了 `from_encoding` 参数的重要性,它可以帮助我们更好地控制输入流的解释过程。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值