Сначала вы должны попытаться извлечь кодировку из заголовков HTTP. Если его там нет, вам следует проанализировать его с помощью lxml. Это может быть сложно, так как lxml выдает ошибки разбора, если кодировка не совпадает. Обходным решением будет декодирование и кодирование данных, игнорируя неизвестные символы.
html_data=html_data.decode("UTF-8","ignore")
html_data=html_data.encode("UTF-8","ignore")
После этого вы можете выполнить синтаксический анализ, вызвав команду lxml.HTML()
с кодировкой utf-8
.
Таким образом, вы сможете найти правильную кодировку, определенную в заголовках HTML.
После нахождения кодировки вам придется повторно проанализировать документ HTML с правильной кодировкой.
К сожалению, иногда вы не можете найти кодировку символов даже в заголовках HTML. Я бы посоветовал вам использовать модуль chardet , чтобы найти правильную кодировку только после сбоя этих шагов.