@valera228822
Я такой

Парсинг на python, в чём ошибка?

import requests
user_id = 12345
url = 'https://yandex.ru/'
r = requests.get(url)
with open('test.html', 'w') as output_file:
    output_file.write(r.text.encode('cp1251'))


<Ошибка>
Traceback (most recent call last):
File "C:\Users\Ivan\Desktop\python\parser.py", line 6, in
output_file.write(r.text.encode('cp1251'))
File "C:\Python39\lib\encodings\cp1251.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode character '\u2212' in position 88884: character maps to
Ошибка>
  • Вопрос задан
  • 552 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Корень проблемы в том, что вы пытаетесь перекодировать в cp1251 текст, в котором есть символы, не представленные в этом кодировке. Кроме того, даже если бы у вас получилась перекодировка, метод encode вернул бы байты, а вы файл открыли в текстовом режиме, возникла бы другая ошибка. Вероятно, вам стоит написать так:
with open('test.html', 'w', encode='utf-8') as output_file:
    output_file.write(r.text)

P.S. Спасибо Сергей Паньков за то, что указал на мою невнимательность.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
daemonhk
@daemonhk
ПсиХоПат
1. Учитесь гуглить
2. Используйте utf-8
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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