我有一个具有以下性质的复杂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)。无论如何你可以这样做吗?
答案 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
标记,当然是其父标记的最后一个子标记)。