8

我有一个具有以下性质的复杂 html DOM 树:

<table>
    ...
    <tr>
        <td>
            ...
        </td>
        <td>
            <table>
                <tr>
                    <td>
                        <!-- inner most table -->
                        <table>
                            ...
                        </table>

                        <h2>This is hell!</h2>
                    <td>
                </tr>
            </table>
        </td>
    </tr>
</table>

我有一些逻辑可以找出最里面的表。但是在找到它之后,我需要获取下一个兄弟元素(h2)。无论如何你可以做到这一点吗?

4

2 回答 2

10

如果tag是最里面的表,那么

tag.findNextSibling('h2')

将会

<h2>This is hell!</h2>

要从字面上获得下一个兄弟姐妹,您可以使用tag.nextSibling,在这种情况下,是u'\n'

如果您想要下一个不是 NavigableString 的兄弟姐妹(例如u'\n'),那么您可以使用

tag.findNextSibling(text=None)

如果你想要第二个兄弟姐妹(不管它是什么),你可以使用

tag.nextSibling.nextSibling

(但请注意,如果tag没有下一个兄弟姐妹,tag.nextSibling则将是Nonetag.nextSibling.nextSibling并将引发AttributeError。)

于 2010-04-10T13:44:50.280 回答
1

Every tag object has a nextSibling attribute that's exactly what you're looking for -- the next sibling (or None for a tag that's the last child of its parent tag, of course).

于 2010-04-10T16:42:23.340 回答