lxml - 获取一个扁平的元素列表

Wal*_*Cat 7 python tree lxml dom flatten

我想要展平一个lxml etree(特别是HTML,如果重要的话.)我如何获得树中所有元素的平面列表?

Rob*_*obᵩ 11

您可以使用此.iter()方法,如下所示:

from lxml import etree

xml = etree.XML('''<html><body>
                   <p>hi there</p><p>2nd paragraph</p>
                   </body></html>''')

# If you want to visit all of the descendants
for element in xml.iter():
    print element.tag

# Or, if you want to have a list of all the descendents
all_elements = list(xml.iter())
print [element.tag for element in all_elements]
Run Code Online (Sandbox Code Playgroud)

  • 接受列表理解:elements = [ element for element in tree.iter()]。实际上,更优雅的是 list(tree.iter()) 。 (2认同)