У меня есть сложный 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). Есть ли так или иначе, можно ли сделать это?
Если 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
.)
Каждый объект тега имеет атрибут nextSibling
- именно то, что вы ищете - следующий брат или сестра (или None
для тега, который является последним ребенком своего родительского тега, конечно).