Как полностью удалить ссылки из 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?