В LXML как сохранить теги, но удалить все встроенные стили и т. Д.? - PullRequest
0 голосов
/ 28 октября 2019

Я знаю, что могу удалить теги, такие как <h1> и т. Д., С помощью LXML, но как мне заставить его сохранить тег, но удалить все остальное, например, так:

<h1 style='font-size: 24px; margin: 0px 0px 12px; font-weight: 600;&#13;
      line-height: 28px; color: rgb(23, 43, 77); font-family:&#13;
      -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,&#13;
      "Noto Sans", Ubuntu, "Droid Sans",&#13;
      "Helvetica Neue", sans-serif; font-style: normal;&#13;
      font-variant-ligatures: normal; font-variant-caps: normal;&#13;
      letter-spacing: normal; orphans: 2; text-align: start;&#13;
      text-indent: 0px; text-transform: none; white-space: normal;&#13;
      widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px;&#13;
      background-color: rgb(244, 245, 247); text-decoration-style:&#13;
      initial; text-decoration-color: initial;'>This text must stay</h1>&#13;

Вышеприведенное должно быть очищено один раз:

<h1>This text must stay</h1>

В настоящее время я делаю это, но не могу заставить его сохранить тег и удалить класс тега и т. Д .:

safe_attrs = list(lxml.html.clean.defs.safe_attrs) + ['bgcolor']
        lxml.html.clean.defs.safe_attrs = safe_attrs
        lxml.html.clean.Cleaner.safe_attrs = lxml.html.clean.defs.safe_attrs
        cleaner = lxml.html.clean.Cleaner(style=False, remove_tags=['body', 'pre'], safe_attrs_only=True,
                                          safe_attrs=safe_attrs, kill_tags=['title', 'code'])
        return cleaner.clean_html(data)
...