beautifulsoup: 找到第n个元素的兄弟元素
我有一个复杂的HTML结构,像这样:
<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 个回答
1
每个标签对象都有一个叫做 nextSibling
的属性,这个属性正是你需要的——它表示下一个兄弟标签(如果这个标签是它父标签的最后一个孩子,那么它的值就是 None
)。
10
如果tag
是最里面的表格,那么
tag.findNextSibling('h2')
将会是
<h2>This is hell!</h2>
如果你想要直接获取下一个兄弟节点,可以使用tag.nextSibling
,在这个例子中,它的值是u'\n'
。
如果你想要获取下一个不是导航字符串的兄弟节点(比如说u'\n'
),你可以使用
tag.findNextSibling(text=None)
如果你想要获取第二个兄弟节点(不管它是什么),你可以使用
tag.nextSibling.nextSibling
(但要注意,如果tag
没有下一个兄弟节点,那么tag.nextSibling
会是None
,而tag.nextSibling.nextSibling
会引发一个AttributeError
错误。)