Ich habe mich gefragt, ob es möglich wäre, es so zu machen, dass prettify
keine neuen Zeilen für bestimmte Tags erstellt hat.
Ich möchte es so einrichten, dass span
und a
Tags nicht aufgeteilt werden, zum Beispiel:
unten ist was ich drucken möchte:
%Vor%Aber das wird tatsächlich gedruckt:
%Vor%
Das Einfügen von Inline-Stil-Tags in neue Linien wie diese fügt tatsächlich Platz zwischen ihnen hinzu und verändert leicht, wie die tatsächliche Seite aussieht. Ich werde Sie mit zwei Fideln verbinden, die den Unterschied anzeigen:
Wenn Sie sich fragen, warum das für BeautifulSoup wichtig ist, liegt es daran, dass ich einen Webseiten-Debugger schreibe, und die Prettify-Funktion wäre sehr nützlich (zusammen mit anderen Dingen in bs4). Aber wenn ich das Dokument verschönere, riskiere ich einige Dinge zu ändern.
Gibt es also eine Möglichkeit, die Funktion prettify
so anzupassen, dass ich festlegen kann, dass bestimmte Tags nicht aufgelöst werden?
Ich poste einen schnellen Hack, während ich keine bessere Lösung finde.
Ich verwende es tatsächlich in meinem Projekt, um zu vermeiden, dass Textareas und Pre-Tags zerstört werden. Ersetzen Sie ['span', 'a'] durch die Tags, auf die Sie den Einzug verhindern möchten.
%Vor%Die kurze Antwort ist nein.
Die längere Antwort ist nicht einfach.
Ich benutze immer noch bs3, also ist das ein Hack für bs3. Ich bin dabei, dies auf bs4 zu portieren.
Es beinhaltet im Wesentlichen das Unterklassifizieren von Tag und BeautifulSoup und das Überladen der Prettify (und verwandten) Methoden.
Code:
%Vor%Tags und Links python html beautifulsoup