Cum să lucrați cu selectorii CSS în Python

Cum să lucrați cu selectorii CSS în Python

Motorul de selectori din Aspose.HTML FOSS pentru Python evaluează selectorii de clasă, id, tip, atribut și pseudo-clasă cu specificitatea standard. Acest ghid demonstrează potrivirea selectorilor prin cascadă — același motor care alimentează select() și element_matches() — folosind pip pentru instalare.

Ghid pas cu pas

Pasul 1: Instalați pachetul

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

Pasul 2: Importați clasele necesare

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

Pasul 3: Creați un element care să se potrivească cu mai mulți selectori

Un element care are atât o clasă, cât și un id este potrivit de selectorii .foo, #bar și div simultan:

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

Pasul 4: Lăsați Specificitatea să Decida

Atașați regulile concurente — selectorul ID-ului (1,0,0) învinge selectorul de clasă (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"))

Pasul 5: Suprascrie cu o Declarație Inline

Declarațiile inline au prioritate (1,0,0) la nivel inline și înving regulile autorului indiferent de specificitatea selectorului:

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

Probleme Comune și Soluții

Un selector care pare corect nu se potrivește cu nimic. Textul selectorului cu erori de sintaxă nu reușește parsarea — motorul îl raportează în loc să ghicească; verificați șirul selectorului.

:where() se comportă diferit față de :is(). Este așa prin proiectare: :where() contribuie cu zero specificitate, :is() contribuie cu cea a argumentului său.

Un selector de tip pierde neașteptat. Selectoarele de tip au cea mai mică clasă de specificitate (0,0,1); orice regulă de clasă sau id pe același element le depășește.

Întrebări frecvente

Pot rula o interogare de selector fără o foaie de stil?

Da — select() evaluează un selector direct pe un arbore, iar element_matches() testează un singur element.

Cum se calculează specificitatea?

specificity() returnează tupla standard (id, class, type) folosită atât de interogări, cât și de cascade.

Ce pseudo-clase sunt modelate?

Forme structurate există pentru :is(), :where(), :has(), :not() cu argumente complexe și selectori structurali în stil nth-child.

Vezi și:

 Română