Я хотел бы использовать отбеливатель для форматирования какого-либо потенциально нечистого HTML.
В следующем примере в идеале отбеливатель следует удалить:
- лишние пробелы при первом открытии
<p >
- атрибут в теге закрывающей ссылки
</a attr="test">
- лишние пробелы в последнем закрытии
</p >
Мой код выглядит так:
import bleach
html = """<p >This <a href="book"> book </a attr="test"> will help you</p >"""
html_cleaned = bleach.clean(html)
# html_cleaned is:
#'<p >This <a href="book"> book </a> will help you</p>'
Как видите, отбеливатель очень противоречив:
- <и> открывающего и закрывающего тега
p
экранируются до <
и >
. Для тега ссылки этого не происходит
- Пробелы в
</p >
удалены, в отверстии <p >
они не
- дополнительно, если я добавлю атрибут к закрывающему тегу
p
, </p attr="test">
, он не будет удален, а для закрывающего </a attr="test">
недопустимый атрибут будет удален.
Что здесь происходит?