如何用src id替换所有HTML标记

时间:2019-06-26 13:22:55

标签: python html beautifulsoup

我是python的新手。我正在尝试使用imaplib阅读邮件,发布至阅读后,我正在将邮件内容发送到API。

挑战在于我需要删除附件标签,即如果它是图像,我需要将其替换为image src而不是img标签。

如果html字符串由带有src的标签组成,则整个标签将被src替换。

从此到

<p class="MsoNormal"><b>Step 2</b>: If you select &#8220;<b>NO</b>&#8221; option it will ask you to select Virtual or Physical<o:p></o:p></p>
<p class="MsoNormal"><img width="614" height="101" id="Picture_x0020_19" src="cid:image002.png@01D52B83.A2B838F0"><o:p></o:p></p>

这个

<p class="MsoNormal"><b>Step 2</b>: If you select &#8220;<b>NO</b>&#8221; option it will ask you to select Virtual or Physical<o:p></o:p></p>
<p class="MsoNormal">image002.png@01D52B83.A2B838F0<o:p></o:p></p>

1 个答案:

答案 0 :(得分:2)

您可以使用replace_with()函数来执行此操作。要选择所有具有属性src的标签,可以使用CSS选择器"[src]"

data = '''
<p class="MsoNormal"><b>Step 2</b>: If you select &#8220;<b>NO</b>&#8221; option it will ask you to select Virtual or Physical<o:p></o:p></p>
<p class="MsoNormal"><img width="614" height="101" id="Picture_x0020_19" src="cid:image002.png@01D52B83.A2B838F0"><o:p></o:p></p>'''

from bs4 import BeautifulSoup

soup = BeautifulSoup(data, 'lxml')

for tag in soup.select('[src]'):
    tag.replace_with(tag['src'])

for p in soup.select('p'):
    print(p)

打印:

<p class="MsoNormal"><b>Step 2</b>: If you select “<b>NO</b>” option it will ask you to select Virtual or Physical<o:p></o:p></p>
<p class="MsoNormal">cid:image002.png@01D52B83.A2B838F0<o:p></o:p></p>