Как полностью удалить ссылки из HTML с помощью Bleach?

Bleach удаляет теги, не внесенные в белый список, из HTML, но оставляет дочерние узлы, например

>>> import bleach
>>> bleach.clean("<a href="">stays</a>", strip=True, tags=[])
'stays'
>>>  

Как можно удалить весь элемент вместе с его дочерними элементами?

1 ответ

Вы должны использовать lxml. Bleach предназначен просто для очистки данных и обеспечения безопасности / сохранности разметки, которую вы храните.

Вы можете использовать lxml для анализа структурированных данных, таких как HTML или XML.

Рассмотрим простой файл HTML;

<html>
<body>
<p>Hello, World!</p>
</body>
</html>
from lxml import html

root = html.parse("hello_world.html").getroot()

print(html.tostring(root))

# <html><body><p>Hello, World!</p></body></html>

p = root.find("body/p")

p.drop_tree()

print(html.tostring(root))

# <html><body></body></html>

В связи с этим, если вы хотите изучить более сложный синтаксический анализ с помощью lxml, один из моих самых старых вопросов был о том, как заставить python анализировать xml и писать из него код python. Пишете инструмент Python для преобразования XML в Python?

Другие вопросы по тегам