在美丽汤中用另一个标签包围标签



如何在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>

有什么建议吗?

在 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>

最新更新