You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将bs4解析器输出的乱码符号解码为西里尔文?

解决Gismeteo页面爬取的西里尔文乱码问题

问题根源

你遇到的乱码是因为requests默认的编码猜测机制偶尔失效,把页面的UTF-8编码错误解析成了Windows-1250或ISO-8859-1,导致西里尔文显示异常。

解决方案

直接让BeautifulSoup处理原始响应字节,而非requests已经解码后的文本。BeautifulSoup自带编码检测功能,能更准确识别页面编码。

修改后的代码

import requests 
from bs4 import BeautifulSoup

gismeteo = 'https://www.gismeteo.ua/ua/weather-novomoskovsk-10961/weekly/'

headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0' }
req1 = requests.get(gismeteo, headers=headers)

# 用response.content(原始字节)代替response.text
data1 = BeautifulSoup(req1.content, 'html.parser')

day_a1 = data1.find('div', class_='widget-row widget-row-days-date')
day_b1 = [da1.text.replace('\n', '').strip() for da1 in day_a1]

print(day_b1)

补充说明

  • 若需手动指定编码,可通过chardet库检测字节内容的编码:
    import chardet
    encoding = chardet.detect(req1.content)['encoding']
    data1 = BeautifulSoup(req1.content.decode(encoding), 'html.parser')
    
  • 避免将列表转成字符串输出(str([...])),直接打印列表能保持更清晰的格式。

内容的提问来源于stack exchange,提问作者Dmytro Raiko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 16:31:35