【问题标题】:Strip the first (top level) tag in Beautifulsoup剥离 Beautifulsoup 中的第一个(顶级)标签
【发布时间】:2016-03-12 12:27:50
【问题描述】:

我做汤:

from bs4 import BeautifulSoup
soup = BeautifulSoup("<div><p>My paragraph <a>My link</a></p></div>","html.parser")

我想去掉第一个顶级标签来显示它的内容,不管标签是什么:

<p>My paragraph<a>My link</a></p>

和所有的孩子。所以我不想用soup.find("div")之类的标签来查找和替换,而是按位置进行。

如何做到这一点?

【问题讨论】:

    标签: python html tags beautifulsoup strip


    【解决方案1】:

    使用提供的.unwrap()函数:

    from bs4 import BeautifulSoup
    soup = BeautifulSoup("<div><p>My paragraph <a>My link</a></p><p>hello again</p></div>","html.parser")
    
    soup.contents[0].unwrap()
    
    print soup
    print len(soup.contents)
    

    结果:

    <p>My paragraph <a>My link</a></p><p>hello again</p>
    2
    

    【讨论】:

      【解决方案2】:

      也许你可以使用它的孩子?

      soup.findChildren()[1] -> &lt;p&gt;My paragraph &lt;a&gt;My link&lt;/a&gt;&lt;/p&gt;

      soup.findChildren()[0] 返回包含div 元素的元素本身。所以索引 1 将是第一个孩子。

      【讨论】:

      • 这将省略标签下的其他孩子,例如如果有另一个段落与第一个平行。
      • 此代码提取您所要求的“第一个顶级标签”。您是说“标签”而不是“标签”吗?
      猜你喜欢
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-16
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 1970-01-01
      相关资源
      最近更新 更多