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

时间:2010-04-10 13:25:30

标签: python find beautifulsoup 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>

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

2 个答案:

答案 0 :(得分:9)

如果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将为None,而tag.nextSibling.nextSibling将提出AttributeError。)

答案 1 :(得分:0)

每个标记对象都有一个nextSibling属性,这正是您正在寻找的 - 下一个兄弟(或None标记,当然是其父标记的最后一个子标记)。