在Beautifulsoup中使用另一个标签来环绕标签

时间:2019-06-21 09:44:51

标签: python beautifulsoup

如何在BeautifulSoup中将所有img标签用另一个标签包围。这个:

<p>
text
<img src="img1.jpg" />
..text..
<img src="img2.jpg" />
..text..
<img src="img3.jpg" />
</p>

应该变成这样:

<p>
text
<figure><img src="img1.jpg" /></figure>
..text..
<figure><img src="img2.jpg" /></figure>
..text..
<figure><img src="img3.jpg" /></figure>
</p>

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

在BeautifulSoup上使用wrap()功能:

data = '''<p>
text
<img src="img1.jpg" />
..text..
<img src="img2.jpg" />
..text..
<img src="img3.jpg" />
</p>'''

from bs4 import BeautifulSoup

soup = BeautifulSoup(data, 'lxml')

for img in soup.select('img'):
    img.wrap(soup.new_tag('figure'))

print(soup.p.prettify())

打印:

<p>
 text
 <figure>
  <img src="img1.jpg"/>
 </figure>
 ..text..
 <figure>
  <img src="img2.jpg"/>
 </figure>
 ..text..
 <figure>
  <img src="img3.jpg"/>
 </figure>
</p>