【发布时间】:2019-06-16 21:00:09
【问题描述】:
我需要处理一个页面,该页面不幸地混合了正确和不正确的 HTML 实体;例如:
<i>Kristján Víctor</i>
这在 Firefox 67 中最终会得到正确解释:
...但是,如果我们执行“查看源代码”,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 的输出字符串中得到了正确的字符,即使在 htmlentity 损坏的情况下(如 Firefox 那样)?
【问题讨论】:
标签: python html html-entities lxml.html