0
我試圖在元素樹中找到一些節點,但這看起來工作方式不同,具體取決於我用於解析的實現。這似乎與文檔不一致。我錯過了什麼嗎?與元素樹和xpath的區別
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'>
我試過也與ElementTree的html5lib,但這並不甚至似乎運行分析會遵守文檔:
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。
你的評論讓我想到了解決方案:'html5lib.parse(...,namespaceHTMLElements = False).xpath('.// x')'工作得很好:) – viraptor 2012-02-29 02:58:01