如何将解析器(bs4)中的奇怪符号解码为西里尔字母



我试图导入"lxml"并找到它的编码,但没有成功。具有解码功能的网站无法将其转换回西里尔字母。只有Windows-1250和ISO-8859-1可以对文本中的某些符号进行编码。

import os 
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)
data1 = BeautifulSoup(req1.text, 'html.parser')
day_a1 = data1.find('div', class_='widget-row widget-row-days-date')
day_b1 = str([da1.text.replace('n', '').strip() for da1 in day_a1])
print(day_b1)

有时输出是这样的(好(:

['Нд11 вер', 'Пн12', 'Вт13', 'Ср14', 'Чт15', 'Пт16', 'Сб17'] 

有时是这样的:

['Ðx9dд11 веÑx80', 'Ðx9fн12', 'Ðx92Ñx8213', 'СÑx8014', 'ЧÑx8215', 'Ðx9fÑx8216', 'Сб17']

我真的不知道为什么请求有时无法使用正确的编码(我在第一次运行时就正确了,后来又错误了…(,但你可以在访问文本之前手动设置它:

req1.encoding = 'utf8'
data1 = BeautifulSoup(req1.text, 'html.parser')

这给了你可靠的:

['Нд11 вер', 'Пн12', 'Вт13', 'Ср14', 'Чт15', 'Пт16', 'Сб17']

最新更新