使用实体引用解析HTML

问题描述 投票:0回答:1

我试图解析一些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

python html xml-parsing lxml
1个回答
0
投票

好的,发现lxml会为我处理ENTITY引用。

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

parser = etree.XMLParser(resolve_entities=True)
root = etree.parse(filename, parser=parser)
© www.soinside.com 2019 - 2024. All rights reserved.