beautifulsoup:找到第n个元素的兄弟姐妹

deo*_*oll 8 python beautifulsoup find siblings

我有一个具有以下性质的复杂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>
Run Code Online (Sandbox Code Playgroud)

我有一些逻辑来找出最内层的表.但在找到它之后,我需要获得下一个兄弟元素(h2).无论如何你可以这样做吗?

unu*_*tbu 9

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

tag.findNextSibling('h2')
Run Code Online (Sandbox Code Playgroud)

将会

<h2>This is hell!</h2>
Run Code Online (Sandbox Code Playgroud)

要真正获得下一个兄弟,你可以使用tag.nextSibling,在这种情况下,是u'\n'.

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

tag.findNextSibling(text=None)
Run Code Online (Sandbox Code Playgroud)

如果你想要第二个兄弟(无论它是什么),你可以使用

tag.nextSibling.nextSibling
Run Code Online (Sandbox Code Playgroud)

(但请注意,如果tag没有下一个兄弟,那么tag.nextSibling将会None,并且tag.nextSibling.nextSibling会提出一个AttributeError.)