Python 3.6 Не распознает русские символы

808
12 мая 2017, 14:27

Python 3.6, PyCharm Community 2017.1, Windows

Пытаюсь получить с веб-страницы ее HTML-код для дальнейшего парсинга через BeautifulSoup вот такой функцией:

def get_page(group, week='now'):
    url = 'https://ifspo.ifmo.ru/schedule/get?num=g6&week=now.html'
    response = requests.get(url)
    web_page = response.text
    print(web_page)
    return web_page

но, когда я ее вывожу, то наблюдаю вот такие кракозябры вместо русского языка:

РаÑпиÑание занÑÑий ФСÐÐ

как это исправить? Иначе дальше то, что отпарсено, читать невозможно

Answer 1

Попробуйте эти варианты:

# Байтовый массив в response.content кодируется в response.encoding
web_page = response.text
...
print(response.content)  # Байтовый массив пришедшей страницы
print(repr(web_page))  # Текстовое представление строки
Answer 2

Кодировка данных страницы и кодировка того, куда вы эти данные выводите отличается. Могу предположить, что страница закодирована в utf-8, а выводите вы в консоль PyCharm, которая используют кодировку операционной системы по умолчанию. Для Windows это кодировка cp1251. В документации есть целый раздел посвящённый этой теме.

Самый простой способ решить эту проблему - это изменить кодировку консоли PyCharm. Для этого в каталоге, куда установлен PyCharm, рядом с pycharm.exe создайте файл pycharm.exe.vmoptions и вставьте в него строку -Dconsole.encoding=UTF-8.

Другой способ - указать requests кодировку страницы:

response = requests.get(url)
response.encoding = 'utf-8'
print(response.text)

Если сервер передаёт правильную кодировку в заголовке Content-Type, то и без этого всё должно работать нормально, но это не ваш случай.

READ ALSO
Какова причина, по которой меню верстают через ненумерованный список ul?

Какова причина, по которой меню верстают через ненумерованный список ul?

Какова причина, по которой меню верстают через ненумерованный список ul?

333
Всплывающая подсказка css

Всплывающая подсказка css

Наводим на текст-всплывает подсказкаКак наилучшим образом реализовать подобное?

369
Абсолютный путь… Картинки и файлы в браузере

Абсолютный путь… Картинки и файлы в браузере

Здравствуйте, возникла следующая задача

351
Как защитить файл от повреждения при отключении питания?

Как защитить файл от повреждения при отключении питания?

Программа хранит ряд настроек в xml-файлеЕсли в момента записи настройки отключается питание компьютера, содержимое файла пропадает (сам...

360