Python で CSS セレクタを使用する方法
Aspose.HTML FOSS for Python のセレクタエンジンは、クラス、id、タイプ、属性、疑似クラスセレクタを標準の特異性で評価します。このガイドでは、pip を使用したインストールを通じて、カスケード — select() と element_matches() を動かすのと同じエンジンがセレクタマッチングを実演します。
ステップバイステップガイド
ステップ 1: パッケージをインストールする
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .ステップ 2: 必要なクラスをインポートする
from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheetステップ 3: 複数のセレクタに一致する要素を作成する
クラスと ID の両方を持つ要素は、.foo、#bar、および div セレクタによって同時にマッチします:
doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)ステップ 4: 特異性に任せる
競合するルールを付与する — ID セレクタの (1,0,0) はクラスセレクタの (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"))ステップ 5: インライン宣言で上書きする
インライン宣言は (1,0,0) のインラインレベルの優先度を持ち、任意のセレクタ特異性の作者ルールを上回ります:
inline = el.style
inline.set_property("color", "green")
print(el.get_computed_style().get_property_value("color"))一般的な問題と対策
見た目は正しいセレクタでも、何も一致しません。 構文エラーのあるセレクタ文字列はパースに失敗します — エンジンは推測せずにエラーを報告します。セレクタ文字列を確認してください。
:where() は次とは異なる動作をします :is(). それは設計上の意図です: :where() 特異性に 0 を加えます、 :is() 引数の特異性を加算します。
型セレクタが予期せず劣ります。 型セレクタは最も低い特異性クラス (0,0,1) を持ちます。同じ要素にクラスや ID のルールがある場合、それらが型セレクタよりも優先されます。
よくある質問
スタイルシートなしでセレクタクエリを実行できますか?
はい — select() はセレクタをツリーに直接評価し、element_matches() は単一要素をテストします。
特異性はどのように計算されますか?
specificity() はクエリとカスケードの両方で使用される標準的な (id, class, type) タプルを返します。
どの疑似クラスがモデル化されていますか?
構造化された形式は、:is()、:where()、:has()、:not() に対して、複雑な引数と nth-child スタイルの構造セレクタを伴って存在します。