Einleitung

Aspose.HTML FOSS für Python ist eine neue Open-Source-Bibliothek zum Arbeiten mit HTML-Dokumenten in Python. Sie parst Markup in ein standardbasiertes Document Object Model, ermöglicht das programmgesteuerte Erstellen und Modifizieren von Elementbäumen und löst CSS — einschließlich Spezifität, Inline-Deklarationen und Vererbung — in berechnete Styles auf, die Sie von jedem Element auslesen können.

Die Bibliothek richtet sich an Backend- und Tooling-Szenarien, in denen ein Browser nicht verfügbar oder unerwünscht ist: Dienste, die gespeicherte HTML bereinigen, Pipelines, die Seitenfragmente neu strukturieren, und Testsuiten, die das erzeugte Markup prüfen. Sie wird von PyPI als aspose-html-foss installiert, ist unter der MIT-Lizenz veröffentlicht und in reinem Python für Python 3.10 und höher implementiert, sodass sie auf Entwickler-Maschinen, CI-Runnern und Servern gleiches Verhalten zeigt.

Über den DOM und den Kern von CSS hinaus liefert das Paket praktische Bausteine, die bei der Verarbeitung von HTML in der Regel ohnehin benötigt werden: einen HTML-Tokenizer und Tree-Builder, den Sie direkt steuern können, WHATWG-artige URL- und URLSearchParams-Klassen sowie einen Byte-Stream-Encoding-Detektor.


Was enthalten ist

DOM erstellen und modifizieren

Die DOM-Ebene ist um Document, Element und Node herum aufgebaut. Erstellen Sie Elemente mit Document.create_element(), verbinden Sie sie mit append_child(), setzen Sie Markup-Attribute mit Element.set_attribute() und suchen Sie Knoten erneut mit Document.get_element_by_id(). Vollständige Seiten und Fragmente werden über HTMLDocument.parse() und HTMLDocument.parse_fragment() geparst.

from aspose_html.dom import Document
doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)

Stylesheets anwenden und berechnete Stile auslesen

CSSStyleSheet.replace_sync() analysiert Stylesheet-Text, Document.attach_style_sheet() setzt ihn in Szene und Element.get_computed_style() löst den Kaskadenablauf auf. Das Ergebnis respektiert die Selektorenspezifität — hier schlägt die ID-Regel die Klassenregel:

from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)
sheet = CSSStyleSheet()
sheet.replace_sync(".foo { color: red } #bar { color: blue }")
doc.attach_style_sheet(sheet)
style = el.get_computed_style()
print(style.get_property_value("color"))

Inline-Deklarationen und die Kaskade

Jedes Element stellt ein lebendes CSSStyleDeclaration über seine style-Eigenschaft bereit. Inline-Deklarationen, die mit set_property() gesetzt werden, haben eine höhere Spezifität als Autor-Stylesheet-Regeln, und get_computed_style() spiegelt das wider:

from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
el = doc.create_element("div")
doc.append_child(el)
sheet = CSSStyleSheet()
sheet.replace_sync("div { color: red }")
doc.attach_style_sheet(sheet)
inline = el.style
inline.set_property("color", "blue")
print(el.get_computed_style().get_property_value("color"))

Tokenizer und Tree Builder

Wenn Sie mehr Kontrolle benötigen als ein fertiggestellter Baum bietet, sind die tieferen Schichten öffentliche API. Tokenizer.tokenize() und Tokenizer.tokenize_fragment() geben den Token-Strom für ein Stück Markup aus, TreeBuilder.run() führt eine standardbasierte Baumkonstruktion durch, und die parse_html()-Funktion wandelt Markup in einen Baum in einem Aufruf um. Das sind dieselben Komponenten, die der hoch-levelige Parse-Pfad verwendet.

URLs und Zeichenkodierungen

URL.parse() und URL.can_parse() übernehmen das WHATWG-Style-URL-Parsing und die Validierung, mit URLSearchParams (append(), get(), has(), delete()) für Abfrage-Strings. Für Rohbytes erkennt detect_encoding() die Kodierung – Byte-Order-Marks eingeschlossen – und gibt den dekodierten Text zusammen mit einem Vertrauens-Level zurück, während get_canonical_name() Kodierungs-Labels normalisiert:

from aspose_html.encoding.detection import detect_encoding
result = detect_encoding(b"\xef\xbb\xbf<p>x</p>")
print(result.encoding)
print(result.confidence)
print(result.text)

Schnellstart

Installation von PyPI:

asposefoss/html is not yet published — build from source until it ships. See the project README for build instructions.

Erstellen Sie dann ein Dokument, formatieren Sie es und lesen Sie das berechnete Ergebnis:

from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet

doc = Document()
el = doc.create_element("div")
el.set_attribute("id", "bar")
doc.append_child(el)

sheet = CSSStyleSheet()
sheet.replace_sync("#bar { color: blue }")
doc.attach_style_sheet(sheet)

style = el.get_computed_style()
print(style.get_property_value("color"))

Open Source & Lizenzierung

Aspose.HTML FOSS für Python wird unter der MIT-Lizenz veröffentlicht, sodass kommerzielle Nutzung, Modifikation und Weiterverteilung alle erlaubt sind. Der Quellcode ist verfügbar auf GitHub und das Paket wird auf PyPI als aspose-html-foss veröffentlicht.


Erste Schritte

Verwandte Ressourcen