python - beautifulsoup - удаление строки кода - PullRequest
0 голосов
/ 13 ноября 2018

Я начал изучать красивую пару.Я пытаюсь удалить из html-скрипта строку кода, содержащую </div>.

. Большинство примеров в документации представлено для целых тегов (часть открытия и закрытия).
Можно ли изменить только одну часть тега?Например:

</div>
<div >Hello</div>
<div data-foo="value">foo!</div>


как убрать только первую строку кода?

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

вам не нужно ничего делать, он будет восстановлен автоматически

from bs4 import BeautifulSoup

html_doc = '''</div> 
<div>World</div>
<div data-foo="value">foo!''' # also invalid, no closing

soup = BeautifulSoup(html_doc, 'html.parser')
print(soup)

вывод

<div>World</div>
<div data-foo="value">foo!</div>

unwrap() предназначен для удаления не восстанавливающего тега.

0 голосов
/ 13 ноября 2018

Вы можете использовать BeautifulSoup's unwrap(), чтобы указать недопустимый тег, который удалит только те дополнительные теги, которые не имеют аналога открытия / закрытия, при этом оставив другие:

soup = BeautifulSoup(html_doc, 'html.parser')

invalid_tags = ['</div>']

for tag in invalid_tags: 
    for match in soup.findAll(tag):
        match.unwrap()

print(soup)

результат:

<div>Hello</div>
<div data-foo="value">foo!</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...