在python中使用lxml解析嵌套的html列表

在python中使用lxml解析嵌套的html列表,python,string,lxml,Python,String,Lxml,我试图解析html列表的元素,如下所示: <ol> <li>r1</li> <li>r2 <ul> <li>n1</li> <li>n2</li> </ul> </li> <li>r3 <ul>

我试图解析html列表的元素,如下所示:

<ol>
    <li>r1</li>
    <li>r2
        <ul>
            <li>n1</li>
            <li>n2</li>
        </ul>
    </li>
    <li>r3
        <ul>
            <li>d1
                <ol>
                    <li>e1</li>
                    <li>e2</li>
                </ol>
            </li>
            <li>d2</li>
        </ul>
    </li>
    <li>r4</li>
</ol>

  • r1
  • r2
    • n1
    • 氮气
  • r3
    • d1
    • e1
    • e2
    • d2
  • r4
  • 在大部分情况下,我可以解析它,但对我来说最大的问题是如何取回dom文本。不幸的是,lxml的node.text_content()返回其下完整树的文本形式。我可以使用lxml获取该元素的文本内容,还是需要使用字符串操作或正则表达式


    例如:带有d1的节点返回“d1e1e2”,而我希望它只返回d1。

    每个节点都有一个名为
    text
    的属性。这就是你要找的

    e、 g:

    对于root.iter(“*”)中的节点:
    打印node.text
    #打印node.tail#例如:abc def=>abc def
    
    for node in root.iter("*"):
        print node.text
        # print node.tail # e.g.: <div> <span> abc </span> def </div> => abc def