Cara Bekerja dengan CSS Selektor di Python
Mesin selektor dalam Aspose.HTML FOSS untuk Python mengevaluasi selektor kelas, id, tipe, atribut, dan pseudo-kelas dengan spesifisitas standar. Panduan ini menunjukkan pencocokan selektor melalui kaskade — mesin yang sama yang menggerakkan select() dan element_matches() — menggunakan pip untuk instalasi.
Panduan Langkah demi Langkah
Langkah 1: Instal Paket
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Langkah 2: Impor Kelas yang Diperlukan
from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheetLangkah 3: Buat Elemen yang Cocok dengan Beberapa Selektor
Elemen yang memiliki baik kelas maupun id cocok dengan selector .foo, #bar, dan div secara bersamaan:
doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)Langkah 4: Biarkan Spesifisitas Menentukan
Lampirkan aturan yang bersaing — selector ID dengan (1,0,0) mengalahkan selector kelas dengan (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"))Langkah 5: Timpa dengan Deklarasi Inline
Deklarasi inline membawa prioritas (1,0,0) tingkat inline dan mengalahkan aturan penulis dengan spesifisitas selector apa pun:
inline = el.style
inline.set_property("color", "green")
print(el.get_computed_style().get_property_value("color"))Masalah Umum dan Solusinya
Selektor yang tampak benar tidak mencocokkan apa pun. Teks selektor dengan kesalahan sintaks gagal diparse — mesin melaporkannya alih-alih menebak; periksa string selektor.
:where() berperilaku berbeda dari :is(). Itu memang disengaja: :where() menyumbang spesifisitas nol, :is() menyumbang spesifisitas argumennya.
Selektor tipe secara tak terduga kalah. Selektor tipe memiliki kelas spesifisitas terendah (0,0,1); aturan kelas atau id apa pun pada elemen yang sama mengungguli mereka.
Pertanyaan yang Sering Diajukan
Apakah saya dapat menjalankan kueri selector tanpa stylesheet?
Ya — select() mengevaluasi selector terhadap pohon secara langsung, dan element_matches() menguji satu elemen.
Bagaimana spesifisitas dihitung?
specificity() mengembalikan tuple standar (id, class, type) yang digunakan oleh kedua kueri dan cascade.
Pseudo-class mana yang dimodelkan?
Bentuk terstruktur ada untuk :is(), :where(), :has(), :not() dengan argumen kompleks, dan selector struktural gaya nth-child.