python - 使用 BeautifulSoup 选择所有 div sibling

标签 python html css beautifulsoup

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

<div>
</div

<div>
</div>

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

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

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

最佳答案

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

soup.select('body > div')

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

您还可以找到第一个 div,然后使用Element.find_next_siblings() 获取所有匹配的 sibling 。 :

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 元素的元素。

关于python - 使用 BeautifulSoup 选择所有 div sibling ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27826883/

相关文章:

python - 如何使用 Selenium 和 Python 请求以编程方式识别 ReCaptcha V2 的 32 位数据站点 key 以获取有效响应?

Python - 在函数中使用来自另一个模块的函数

javascript - Flex Box 未按预期运行

css - commanbutton 中的 Primefaces 自定义图标

python - 如何在Win11下显示WSL2中的matplotlib窗口?

python - 打开作为记录存储在 Django 数据库中的文本文件

php - 如何动态添加图片?

javascript - 使用 JavaScript 的平滑滚动问题

html - CSS "Header Nav a"将鼠标悬停在没有脚本的字体颜色更改上

javascript - 有没有办法在 closeNav 函数上轻松地将我的汉堡包菜单图标改回三行?