Мне нужно работать со страницей, в которой есть неудачное сочетание правильных и неправильных сущностей HTML; например:
<i>Kristján Víctor</i>
В Firefox 67 это интерпретируется правильно, в конце концов:
... однако, если мы сделаем «View Source», Firefox через цвет синтаксиса указывает, что что-то не так с первой сущностью HTML:
... и действительно, точка с запятой в конце сущности HTML отсутствует - однако, каким-то образом Firefox выясняет это и отображает правильный символ.
Теперь, если я попытаюсь поработать с этим в lxml:
#!/usr/bin/env python3
import lxml.html as LH
import lxml.html.clean as LHclean
testhtmlstring = "<i>Kristján Víctor</i>"
myhtml = LH.fromstring( testhtmlstring )
myhtml = LHclean.clean_html( myhtml )
myitem = myhtml.xpath("//i")[0]
myitemstr = myitem.text_content()
print(myitemstr)
... код выводит это на терминал (Ubuntu 18.04):
Kristján Víctor
... так что, очевидно, сломанная htmlentity не была преобразована в правильный символ.
Есть ли что-то, что я могу использовать, поэтому я получаю правильный символ в моей выходной строке из lxml, даже в случае нарушения целостности (как это делает Firefox)?