Wie man mit CSS-Selektoren in Python arbeitet

Wie man mit CSS-Selektoren in Python arbeitet

Die Selektoren-Engine in Aspose.HTML FOSS für Python bewertet Klassen-, ID-, Typ-, Attribut- und Pseudo-Klassen-Selektoren mit standardkonformer Spezifität. Dieser Leitfaden demonstriert die Selektoren-Übereinstimmung durch die Kaskade – dieselbe Engine, die select() und element_matches() antreibt – unter Verwendung von pip zur Installation.

Schritt-für-Schritt-Anleitung

Schritt 1: Paket installieren

git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .

Schritt 2: Erforderliche Klassen importieren

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

Schritt 3: Ein Element erstellen, das von mehreren Selektoren erfasst wird

Ein Element, das sowohl eine Klasse als auch eine ID trägt, wird gleichzeitig von den Selektoren .foo, #bar und div gematcht:

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

Schritt 4: Die Spezifität entscheiden lassen

Konkurrenzregeln anhängen — die ID-Selektor-Spezifität (1,0,0) schlägt die Klassen-Selektor-Spezifität (0,1,0):

sheet = CSSStyleSheet()
sheet.replace_sync(".foo { color: red } #bar { color: blue }")
doc.attach_style_sheet(sheet)
print(el.get_computed_style().get_property_value("color"))

Schritt 5: Mit einer Inline-Deklaration überschreiben

Inline-Deklarationen besitzen die Priorität (1,0,0) auf Inline-Ebene und übertreffen Autoren-Regeln jeder Selektor-Spezifität:

inline = el.style
inline.set_property("color", "green")
print(el.get_computed_style().get_property_value("color"))

Häufige Probleme und Lösungen

Ein Selektor, der korrekt aussieht, trifft nichts. Selektor-Text mit Syntaxfehlern schlägt die Analyse fehl — die Engine meldet ihn statt zu raten; überprüfe die Selektor-Zeichenkette.

:where() verhält sich anders als :is(). Das ist beabsichtigt: :where() trägt null Spezifität bei, :is() trägt die seines Arguments bei.

Ein Typselektor verliert unerwartet. Typselektoren haben die niedrigste Spezifitätsklasse (0,0,1); jede Klassen- oder ID-Regel auf demselben Element hat Vorrang vor ihnen.

Häufig gestellte Fragen

Kann ich eine Selektor-Abfrage ohne Stylesheet ausführen?

Ja — select() evaluiert einen Selektor direkt gegen einen Baum, und element_matches() testet ein einzelnes Element.

Wie wird die Spezifität berechnet?

specificity() gibt das Standard-Tupel (id, class, type) zurück, das sowohl von Abfragen als auch vom Cascade verwendet wird.

Welche Pseudo-Klassen werden modelliert?

Strukturierte Formulare existieren für :is(), :where(), :has(), :not() mit komplexen Argumenten und nth-child-ähnlichen Strukturselektoren.

Siehe auch

 Deutsch