【问题标题】:Parsing HTML with entity ref使用实体 ref 解析 HTML
【发布时间】:2019-08-10 13:09:55
【问题描述】:

我正在尝试解析一些 HTML 示例

<solids>
&sub2;
</solids>

html 文件作为字符串读入。我需要将 sub2 定义的文件中的 HTML 插入到字符串的适当部分,然后再将整个字符串处理为 XML。

我已经尝试过 HTMLParser 并将其处理程序与

class MyHTMLParser(HTMLParser):
   def handle_entityref(self, name):
   # This gets called when the entity is referenced
   print "Entity reference : "+ name
   print "Current Section  : "+ self.get_starttag_text()
   print self.getpos()

但 getpos 返回的是行号和偏移量,而不是字符串中的位置。 (插入可以在文件中的任意位置)

我找到了this link,这建议使用 lxml。我查看了 lxml 但看不到它如何解决问题。它的扫描仪似乎没有实体处理程序,似乎是 xml 而不是 html

【问题讨论】:

  • 我不理解“需要从 sub2 定义的文件中插入 HTML 到字符串的适当部分”的意思。你能举个例子和想要的输出吗?
  • 文件以` ]> ` 所以sub2 指的是应该包含在 之间的文件

标签: python html xml-parsing lxml


【解决方案1】:

好的,发现 lxml 将为我处理实体引用。

只需使用选项 resolve_entities=True 设置解析器

parser = etree.XMLParser(resolve_entities=True)
root = etree.parse(filename, parser=parser)

【讨论】:

    猜你喜欢
    • 2013-01-22
    • 1970-01-01
    • 2011-01-23
    • 2011-06-06
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多