Функция open()
имеет необязательный параметр encoding
.Его значение по умолчанию зависит от платформы, но в вашем случае это, по-видимому, значение по умолчанию UTF-8.
Если вы знаете правильный кодек (например, из заголовка HTTTP), вы можете указать его:
html_doc = open('path/to/file.html', 'r', encoding='cp1252')
Если вы этого не знаете, скорее всего, это записано в файле.Вы можете открыть файл в двоичном режиме:
html_doc = open('path/to/file.html', 'rb')
, а затем попытаться найти объявление кодировки и декодировать все это в памяти.
Однако не делайте этого.Там нет особого смысла в открытии и обработке HTML, как текстовый файл.Вы должны использовать анализатор HTML, чтобы пройтись по дереву документа и извлечь все, что вам нужно.Стандартная библиотека Python имеет один , но вам может показаться, что Beautiful Soup проще в использовании.