使用 BeautifulSoup 选择所有 div 兄弟姐妹

Maz*_*zzy 3 html css python beautifulsoup

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

<div>
</div

<div>
</div>

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

<div>
  <div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我想选择所有兄弟 div 而不选择第三个和第四个块中的嵌套 div。如果我使用,find_all()我会得到所有的 div。

Mar*_*ers 7

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

soup.select('body > div')
Run Code Online (Sandbox Code Playgroud)

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

您还可以找到第一个 div,然后使用以下命令获取所有匹配的兄弟姐妹Element.find_next_siblings():

first_div = soup.find('div')
all_divs = [first_div] + first_div.find_next_siblings('div')
Run Code Online (Sandbox Code Playgroud)

或者您可以使用element.children生成器并过滤那些:

all_divs = (elem for elem in top_level.children if getattr(elem, 'name', None) == 'div')
Run Code Online (Sandbox Code Playgroud)

哪里top_level是div直接包含这些元素的元素。