【问题标题】:Select all div siblings by using BeautifulSoup使用 BeautifulSoup 选择所有 div 兄弟姐妹
【发布时间】:2015-03-05 18:51:51
【问题描述】:

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

<div>
</div

<div>
</div>

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

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

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

【问题讨论】:

    标签: python html css beautifulsoup


    【解决方案1】:

    你可以找到父元素的direct子元素:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-20
      • 2012-07-23
      • 1970-01-01
      • 1970-01-01
      • 2018-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多