使用Python中的LXML列表嵌套的HTML列表



我正在尝试解析看起来像这样的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>

我可以在大多数情况下对此进行解析,但对我来说最大的问题是将DOM文本退回。不幸的是,lxml的node.text_content()返回其下面完整树的文本形式。我可以使用LXML获得该元素的文本内容,还是需要使用字符串操纵或正则言论?

对于例如:带有D1的节点返回" D1E1E2",而我希望它仅返回D1。

每个节点都有一个称为 text的属性。那就是您要寻找的。

例如:

for node in root.iter("*"):
    print node.text
    # print node.tail # e.g.: <div> <span> abc </span> def </div> => abc def

最新更新