2

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

4

1 回答 1

2

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

例如:

for node in root.iter("*"):
    print node.text
    # print node.tail # e.g.: <div> <span> abc </span> def </div> => abc def
于 2012-11-08T00:57:07.443 回答