Как заменить все тэги HTML идентификатором src - PullRequest
0 голосов
/ 26 июня 2019

Я очень плохо знаком с Python. Я пытаюсь читать почту, используя imaplib, отправлять сообщения на чтение. Я отправляю содержимое почты в API.

Проблема в том, что мне нужно удалить тег вложения, т. Е. Если это изображение, мне нужно заменить его на изображение 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 Ответ

2 голосов
/ 26 июня 2019

Вы можете использовать функцию 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...