我是python的新手。我正在尝试使用imaplib阅读邮件,发布至阅读后,我正在将邮件内容发送到API。
挑战在于我需要删除附件标签,即如果它是图像,我需要将其替换为image src而不是img标签。
如果html字符串由带有src的标签组成,则整个标签将被src替换。
从此到
<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"><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 “<b>NO</b>” 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>
答案 0 :(得分:2)
您可以使用replace_with()
函数来执行此操作。要选择所有具有属性src
的标签,可以使用CSS选择器"[src]"
:
data = '''
<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"><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>