小编Cam*_*ird的帖子

如何使用Python解析包含命名的ISO-8859-1实体的HTML?

我总结一下:minidom似乎不喜欢8859个命名实体; 什么是合适的解决方案?

这是代码,说明了我的情况:

sample = """
  <html>
    <body>
      <h1>Un ejemplo</h1>
      <p>Me llamo Juan Fulano y Hern&aacute;ndez.</p>
    </body>
  </html>
"""
sample2 = sample.replace("&aacute;", "&#225;")

import xml.dom.minidom

dom2 = xml.dom.minidom.parseString(sample2)
dom = xml.dom.minidom.parseString(sample)
Run Code Online (Sandbox Code Playgroud)

简而言之:当HTML包含'á'和类似的,表示为命名实体时,minidom会抱怨

... xml.parsers.expat.ExpatError: undefined entity ...
Run Code Online (Sandbox Code Playgroud)

我该怎么回应?我

  • 用相应的文字常量替换命名实体?
  • 使用minidom以外的解析器?哪一个?
  • 不知何故(使用编码赋值?)说服minidom这些命名实体很酷?

没有可行的是说服(X)的作者HTML避开命名实体.

python xhtml html-parsing

2
推荐指数
1
解决办法
1683
查看次数

标签 统计

html-parsing ×1

python ×1

xhtml ×1