我有一个html文件,其结构如下:
<div>
</div
<div>
</div>
<div>
<div>
</div>
<div>
</div>
<div>
</div>
<div>
<div>
<div>
</div>
</div>
我想在第三和第四个块中选择所有siblings div而不选择嵌套div。如果我使用find_all()
,我会获得所有div。
答案 0 :(得分:3)
您可以找到父元素的直接子元素:
soup.select('body > div')
获取顶级div
标记下的所有body
元素。
您还可以找到第一个 div
,然后使用Element.find_next_siblings()
抓住所有匹配的兄弟姐妹:
first_div = soup.find('div')
all_divs = [first_div] + first_div.find_next_siblings('div')
或者你可以使用element.children
generator并过滤那些:
all_divs = (elem for elem in top_level.children if getattr(elem, 'name', None) == 'div')
其中top_level
是直接包含这些div
元素的元素。