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
но, когда я ее вывожу, то наблюдаю вот такие кракозябры вместо русского языка:
РаÑпиÑание занÑÑий ФСÐÐ
как это исправить? Иначе дальше то, что отпарсено, читать невозможно
Попробуйте эти варианты:
# Байтовый массив в response.content кодируется в response.encoding
web_page = response.text
...
print(response.content) # Байтовый массив пришедшей страницы
print(repr(web_page)) # Текстовое представление строки
Кодировка данных страницы и кодировка того, куда вы эти данные выводите отличается. Могу предположить, что страница закодирована в 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
, то и без этого всё должно работать нормально, но это не ваш случай.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какова причина, по которой меню верстают через ненумерованный список ul?
Наводим на текст-всплывает подсказкаКак наилучшим образом реализовать подобное?
Программа хранит ряд настроек в xml-файлеЕсли в момента записи настройки отключается питание компьютера, содержимое файла пропадает (сам...