Häufig gestellte Fragen
Lizenzierung & Open Source
Welche Lizenz verwendet Aspose.HTML FOSS für Python?
Die Bibliothek wird unter der MIT-Lizenz veröffentlicht. Der vollständige Text wird als die LICENSE Datei im GitHub-Repository.
Kann ich sie in kommerziellen Produkten verwenden?
Ja. Die MIT-Lizenz erlaubt kommerzielle Nutzung, Modifikation, Weiterverteilung und Unterlizenzierung. Die einzige Voraussetzung ist, den Copyright-Hinweis und den Lizenztext bei wesentlichen Kopien beizubehalten.
Installation & Anforderungen
Wie installiere ich die Bibliothek und welche Python-Versionen werden unterstützt?
Installieren Sie mit git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git. Die Bibliothek erfordert Python 3.10 oder höher; die aktuelle Version ist 0.1.0.
Gibt es native Abhängigkeiten?
Nein. Die Implementierung ist reines Python — kein Browser-Engine, keine kompilierten Erweiterungen — sodass sie sich auf Windows, Linux und macOS identisch verhält, einschließlich CI-Runnern und Containern.
API Usage
Wie parse ich HTML in ein Dokument?
Verwenden Sie HTMLDocument.parse() für komplette Seiten oder HTMLDocument.parse_fragment() für partielles Markup. Für die programmgesteuerte Erstellung ist Document die Node-Factory:
from aspose_html.dom import Document
doc = Document()
el = doc.create_element("div")
el.set_attribute("id", "bar")
doc.append_child(el)Wie wende ich CSS an und lese den resultierenden Stil?
Parsen Sie Stylesheet-Text mit CSSStyleSheet.replace_sync(), hängen Sie ihn mit Document.attach_style_sheet() an und lesen Sie das aufgelöste Ergebnis mit Element.get_computed_style():
from aspose_html.cssom import CSSStyleSheet
sheet = CSSStyleSheet()
sheet.replace_sync("#bar { color: blue }")
doc.attach_style_sheet(sheet)
print(el.get_computed_style().get_property_value("color"))Handhabt die Kaskade Spezifität und !important korrekt?
Ja. Berechnete Werte folgen der Selektor-Spezifität (ID schlägt Klasse schlägt Typ), inline-Deklarationen haben Vorrang vor Autorenregeln, und !important Autorenregeln haben Vorrang vor nicht-wichtigen Inline-Deklarationen. Vererbung fließt von Eltern zu Kind für vererbbare Eigenschaften.
Kann ich den Tokenizer und den Baum-Builder direkt verwenden?
Ja — Tokenizer.tokenize() gibt den standardmäßigen Token-Strom aus, TreeBuilder.run() führt die Baumkonstruktion aus, und parse_html() fasst die gesamte Pipeline in einem Aufruf zusammen.
Wie arbeite ich mit URLs und Zeichenkodierungen?
URL.parse() und URL.can_parse() bieten WHATWG-stilige URL-Verarbeitung mit URLSearchParams für Abfrage-Strings. Für Rohbytes gibt detect_encoding() die Kodierung, ein Vertrauensniveau und den dekodierten Text zurück.
Bekannte Einschränkungen
Gibt es APIs, die vorhanden, aber nicht implementiert sind?
Eine kleine Anzahl von Mitgliedern ist deklariert, aber momentan nicht funktionsfähig, einschließlich CSSRule.type, CSSRule.css_text und HTMLImageElement.decode. Die limitations.md-Datei im Wissensmodell verfolgt diese; vermeiden Sie, sich darauf zu verlassen.
Rendert die Bibliothek Seiten oder konvertiert sie in andere Formate?
Nein. Die aktuelle Version konzentriert sich auf das Parsen, die DOM-Manipulation, die CSS-Stilberechnung, Layout-Strukturen, URLs und Kodierungen. Sie enthält keine Formatkonvertierung oder Bild/PDF-Rendering.
Wird JavaScript beim Parsen automatisch ausgeführt?
Nein. Beim Parsen werden niemals Skripte ausgeführt. Die Skriptauswertung ist explizit und erfolgt über JSContext, wobei das Laden von Modulen durch ModuleRegistry und ModuleLoadPolicy gesteuert wird.