Select 所有 div 兄弟姐妹使用 BeautifulSoup

Select all div siblings by using BeautifulSoup

我有一个 html 文件,其结构如下:

<div>
</div

<div>
</div>

<div>
  <div>
  </div>
  <div>
  </div>
  <div>
  </div>
<div>

<div>
  <div>
  </div>
</div>

我想 select 所有兄弟姐妹 div 没有 select 嵌套 div 在第三和第四块。如果我使用 find_all() 我得到所有 divs.

您可以找到父元素的直接个子元素:

soup.select('body > div')

获取顶级 body 标签下的所有 div 元素。

你也可以先找到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 元素的元素。