Python beautifulsoup:查找第n个元素';兄弟姐妹

Python beautifulsoup:查找第n个元素';兄弟姐妹,python,find,beautifulsoup,siblings,Python,Find,Beautifulsoup,Siblings,我有一个具有以下性质的复杂html DOM树: <table> ... <tr> <td> ... </td> <td> <table> <tr> <td> <!--

我有一个具有以下性质的复杂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)。还有其他方法可以这样做吗?

如果
标记
是最里面的表,那么

tag.findNextSibling('h2')
将是

<h2>This is hell!</h2>
如果您想要第二个兄弟姐妹(无论它是什么),您可以使用

tag.findNextSibling(text=None)
tag.nextSibling.nextSibling

(但请注意,如果
tag
没有下一个同级,那么
tag.nextSibling
将是
None
,而
tag.nextSibling.nextSibling
将引发一个
AttributeError

。每个标记对象都有一个正是您要寻找的属性——下一个同级(或
None
对于作为其父标记最后一个子标记的标记,当然)。

的意思不是说查找“h2”…它可以是任何东西。如何获取下一个是什么…?
tag.findNextSibling(text!=u'\n')
不是有效的Python。您可能是指
tag.findNextSibling(text=lambda x:not x.isspace())
@Max:谢谢你指出我的错误。
不是x.isspace()
不幸的是,因为
text
关键字参数只适用于导航字符串,而
..
标记不是。因此,我编辑了我的答案,建议
text=None
跳过所有导航字符串。