2017-05-24 7 views
0

このようにHTMLからテキストタグを削除し、子要素を残す方法を教えてください。美味しいスープで「テキストタグ」を削除するには

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

を次のように私はそれを変換したい

<text _ngcontent-c0="" _nghost-c2=""> 
    <p>sample text</p> 
</text> 
<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() 

答えて

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> 

をあなたの代わりにあなたがunwrapメソッドを使用しようとしている、まったくBeautifulSoupを使用していないように、それはそうですしたがって、あなたが言及したエラーです。
BeatifulSoupを使用している場合は、HTMLを解析するために使用している残りのコードを提供してください。

+0

説明が不明なため申し訳ありません。 コンテンツに他の要素がある場合に対応する方法を知りたい。 私の質問が更新されました。 – xKxAxKx

+0

私の例は、あなたの更新されたケースでもうまくいくはずです。 '

サンプルテキスト

'を返す必要があります。あなたの問題を明確にするために私の答えを更新しました。 – errata

関連する問題