【问题标题】:Extract outer div using BeautifulSoup使用 BeautifulSoup 提取外部 div
【发布时间】:2011-06-11 05:17:57
【问题描述】:

如果 HTML 代码如下所示:

<div class="div1">
<p>hello</p>
<p>hi</p>
    <div class="nesteddiv">
        <p>one</p>
        <p>two</p>
        <p>three</p>
    </div>
</div>

我如何提取只是

<div class="div1">
    <p>hello</p>
    <p>hi</p>
</div>

我已经尝试过parser.find('div', 'div1'),但我得到了整个 div,包括嵌套的。

【问题讨论】:

    标签: python beautifulsoup


    【解决方案1】:

    您实际上想要extract() 嵌套 div 从文档中,然后获取第一个div。这是一个示例(html 是您在问题中提供的 HTML):

    >>> from BeautifulSoup import BeautifulSoup
    >>> soup = BeautifulSoup(html)
    >>> soup.div.div.extract()
    <div class="nesteddiv">
    <p>one</p>
    <p>two</p>
    <p>three</p>
    </div>
    >>> soup.div
    <div class="div1">
    <p>hello</p>
    <p>hi</p>
    
    </div>
    

    【讨论】:

      【解决方案2】:

      为什么不直接 find() 嵌套的 div,然后使用 extract() 从树中删除它?

      【讨论】:

      • 不过我需要外层的。
      • extract() 实际上是执行移除,如果你 extract() 内层,你最终会得到外层
      • 这是正确的。我的回答通过一个工作示例强调了这一点。
      猜你喜欢
      • 2018-06-06
      • 2015-10-22
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-19
      相关资源
      最近更新 更多