Python beautifulsoup:查找第n个元素';兄弟姐妹
我有一个具有以下性质的复杂html DOM树:Python beautifulsoup:查找第n个元素';兄弟姐妹,python,find,beautifulsoup,siblings,Python,Find,Beautifulsoup,Siblings,我有一个具有以下性质的复杂html DOM树: <table> ... <tr> <td> ... </td> <td> <table> <tr> <td> <!--
<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
跳过所有导航字符串。