Ich mache etwas HTML-Reinigung mit BeautifulSoup. Noob zu beiden Python & amp; BeautifulSuppe. Ich habe Tags, die korrekt wie folgt entfernt werden, basierend auf einer Antwort, die ich anderswo auf Stackoverflow gefunden habe:
%Vor%Aber wie können Sie Inline-Stile entfernen? Zum Beispiel das Folgende:
%Vor%Sollte werden:
%Vor%So löschen Sie die Inline-Klasse, ID, Name & amp; Stilattribute aller Elemente?
Antworten auf andere ähnliche Fragen Ich könnte alle erwähnt mit einem CSS-Parser, um dies zu tun, anstatt BeautifulSoup, aber da die Aufgabe ist einfach zu entfernen, anstatt die Attribute zu manipulieren, und ist eine allgemeine Regel für alle Tags, war ich in der Hoffnung, einen Weg zu finden, alles in BeautifulSoup zu tun.
Sie müssen kein CSS analysieren, wenn Sie nur alles entfernen möchten. BeautifulSoup bietet eine Möglichkeit, ganze Attribute wie folgt zu entfernen:
%Vor% Wenn Sie nur ganze Tags (und deren Inhalt) löschen möchten, benötigen Sie nicht extract()
, wodurch das Tag zurückgegeben wird. Sie brauchen nur decompose()
:
Kein großer Unterschied, aber etwas anderes, das ich beim Betrachten der Dokumente gefunden habe. Weitere Details zur API finden Sie in der BeautifulSoup-Dokumentation mit vielen Beispielen.
Ich würde das nicht in BeautifulSoup
machen - Sie werden viel Zeit damit verbringen, Randfälle zu testen, zu testen und zu bearbeiten.
Bleach
macht genau das für Sie. Ссылка
Wenn Sie dies in BeautifulSoup
tun würden, würde ich vorschlagen, dass Sie mit der "Whitelist" -Ansatz gehen, wie Bleach
tut. Entscheiden Sie, welche Tags welche Attribute haben sollen, und entfernen Sie alle Tags / Attribute, die nicht übereinstimmen.
Basierend auf der jmk-Funktion verwende ich diese Funktion, um Attribute auf Basis einer weißen Liste zu entfernen:
Arbeite in python2, BeautifulSoup3
%Vor%Tags und Links python css inline beautifulsoup