Задать вопрос
@plyk

Как перекодировать windows-1251 в utf-8 при парсинге?

У сайта есть:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">


При запуске кода:
response = requests.get('url', headers = {'UserAgent': UserAgent().Chrome})

print(response.text)


Ответ примерно такой:
<font face="Verdana"><font color="#FFFFCC" size="2">Óïðàæíåíèå XXVI/6: ãðóïïèðîâàíèå</font><br>

Если это сохранить при помощи:
with open('1.html', 'w', encoding='utf-8') as file:
    file.write(response.text)

То ничего не изменится.
Если просто, то надо сделать текст читаемым, чтоб при просмотре в bs4 и последующем сохранении в файлы можно было видеть текст в utf-8.
Как быть?
  • Вопрос задан
  • 7278 просмотров
Подписаться 1 Простой 8 комментариев
Решения вопроса 1
@plyk Автор вопроса
Оказалось что библиотека Requests кодирует данные в кодировку Latin-1(ISO-8859-1), сайт же отправляет данные с кодировкой windows-1251. Получалось что библиотека перекодировала данные сайта в другую кодировку.
Решил так:
sourse = requests.get('url')
sourse.encoding='windows-1251' # Теперь requests отдаёт данные в кодировке windows-1251 которая уже нормально читается

В принципе можно остаться на этой кодировке если при записи в файл указать encoding='utf-8'
Ну если прям сильно хочется перекодировать в utf-8, можно раскодировать текст в utf-8 а потом закодировать в него
# if text is windows-1251
text = '123 asdasd 55f'
text = encode('utf-8').decode('utf-8')
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@12rbah
В чем проблема переконвертировать текст в utf-8? https://stackoverflow.com/questions/7555335/how-to...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы