Я работаю с html и использую lxml для его анализа. В целях тестирования у меня есть html-документ, сохраненный как строка в файле python с кодировкой = utf-8 вверху.Как сообщить lxml, какую кодировку использовать?
Всякий раз, когда я пытаюсь разобрать html с помощью lxml, я получаю странные кодировки html, если в html нет тега <meta charset="utf-8">
.
Это код:
t = lxml.html.fromstring(page_html)
print lxml.html.tostring(t)
Если page_html
строка содержит мета кодовую выше метода tostring()
возвращает хорошо закодированы HTML (т.е. ’
превращается в ’
). Если он не имеет его, результаты искажены (т.е. ’
превращается в ’
)
Это кодирование происходит в методе fromstring
, а не tostring
один, так что я не могу просто вставить новый мета элемент в дереве после него создается к тому времени, когда к концу этого времени.
Единственное решение, о котором я могу думать, это попытаться изменить исходную строку html и добавить там метатег до создания дерева. Однако это похоже на klunky. Разве нет лучшего способа сделать это с помощью lxml?