如何删除"文本标签"美丽的汤

时间:2017-05-24 09:59:46

标签: python beautifulsoup

请告诉我如何从html中删除文本标签,并保留子元素。

<text _ngcontent-c0="" _nghost-c2="">
    <p>sample text</p>
</text>
<image>
    <figure>
        <img alt="" src="xxxxx.jpg"/>
    </figure>
</image>

我想将其转换如下

<p>sample text</p>
<image>
    <figure>
        <img alt="" src="xxxxx.jpg"/>
    </figure>
</image>

我尝试了以下方法,但发生了错误'str' object has no attribute 'unwrap'

from bs4 import BeautifulSoup

content = '<text _ngcontent-c0="" _nghost-c2="">
             <p>sample text</p>
           </text>
           <image>
             <figure>
               <img alt="" src="xxxxx.jpg"/>
             </figure>
           </image>'

while (content.text):
    content.text.unwrap()

1 个答案:

答案 0 :(得分:0)

你可以得到这样的“解开”元素:

from bs4 import BeautifulSoup

content = '<text _ngcontent-c0="" _nghost-c2=""><p>sample text</p></text><image><figure><img alt="" src="xxxxx.jpg"/></figure></image>'

soup = BeautifulSoup(content)
for p in soup.find_all('p'):
    p.parent.unwrap()
    print(p.parent)  # prints <p>sample text</p><image><figure><img alt="" src="xxxxx.jpg"/></figure></image>

根据您提供的代码,您似乎根本没有使用BeautifulSoup,而是尝试在普通字符串上使用unwrap方法,因此您提到的错误。
如果您使用的是BeatifulSoup,请提供用于解析HTML的其余代码。