Я пытаюсь найти некоторые узлы в дереве элементов, но, похоже, это работает по-разному, в зависимости от того, какую реализацию я использую для анализа. Это не похоже на документацию. Я что-то упустил?
In [52]: ElementTree.fromstring('<html><x /></html>').find('.//x')
Out[52]: <Element 'x' at 0x3008c10>
но:
In [59]: type(html5lib.parse('<html><x /></html>', treebuilder='lxml').find('.//x'))
Out[59]: <type 'NoneType'>
Я также пробовал html5lib с ElementTree, но, похоже, он даже не запускает синтаксический анализ, который бы соответствовал документации:
In [72]: parser = html5lib.HTMLParser(tree=html5lib.treebuilders.getTreeBuilder('etree', cElementTree))
In [73]: type(parser.parse('<html><x /></html>'))
Out[73]: <type 'NoneType'>
Так как мне решить это? Я не могу продолжать использовать ElementTree напрямую, так как он не анализирует неработающий HTML.