如何使用Python解析包含命名ISO-8859-1实体的HTML?
我总结一下:minidom似乎不喜欢8859个命名实体;什么是合适的解决方案 以下代码说明了我的情况:如何使用Python解析包含命名ISO-8859-1实体的HTML?,python,html-parsing,xhtml,Python,Html Parsing,Xhtml,我总结一下:minidom似乎不喜欢8859个命名实体;什么是合适的解决方案 以下代码说明了我的情况: sample = """ <html> <body> <h1>Un ejemplo</h1> <p>Me llamo Juan Fulano y Hernández.</p> </body> </html> """ sample2
sample = """
<html>
<body>
<h1>Un ejemplo</h1>
<p>Me llamo Juan Fulano y Hernández.</p>
</body>
</html>
"""
sample2 = sample.replace("á", "á")
import xml.dom.minidom
dom2 = xml.dom.minidom.parseString(sample2)
dom = xml.dom.minidom.parseString(sample)
我该如何回应?是吗
- 是否用相应的文字常量替换命名实体?
- 是否使用minidom以外的解析器?哪个?
- 不知何故(通过编码分配?)让minidom相信这些命名实体很酷?
说服(X)HTML的作者避开命名实体是不可行的。
xml.dom.minidom
是xml解析器,而不是HTML解析器。因此,它不知道任何HTML实体(只知道XML和HTML共同的实体:”、、、
、
、
和
)
试试。对于这个问题及其类似的问题,以前有很多答案,例如:谢谢你,Ekhumaro;我太迟钝了,以至于我没有意识到客户真的处于HTML状态,而他将其标记为XML只是我应该忽略的噪音。谢谢,Tim Pietzcker:你的回答是(非常!)快速、准确且接近我所需要的。事实上,我正在使用的数据被宣传为XML;从长远来看,我需要研究如何协调minidom对相关DTD的想法与数据作者的想法。不过,与此同时,我想让你知道,你的话很有帮助:虽然我很熟悉对于BeautifulSoup,我没有想到你的分析,我甚至没有想过在这种情况下尝试。你给我留下了比我开始时更好的印象。
... xml.parsers.expat.ExpatError: undefined entity ...