Разбор HTML с помощью ссылки на сущность - PullRequest
0 голосов
/ 20 марта 2019

Я пытаюсь разобрать какой-то HTML, который в качестве примера

<solids>
&sub2;
</solids>

HTML-файл читается как строка. Мне нужно вставить HTML из файла, который sub2 определяет в соответствующую часть строки, а затем обработать всю строку как 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 возвращает номер строки и смещение, а не позицию в строке. (Вставка может быть в любой точке файла)

Я нашел эту ссылку , и это предлагает использовать lxml. Я посмотрел на lxml, но не вижу, как это решит проблему. Его сканер, похоже, не имеет обработчика сущностей и выглядит как XML, а не HTML

1 Ответ

0 голосов
/ 10 апреля 2019

Хорошо, я обнаружил, что lxml будет обрабатывать ссылки ENTITY для меня.

Просто нужно было настроить парсер с параметром resol_entities = True

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