ホームページ > バックエンド開発 > PHPチュートリアル > XPath で CSS クラスを正しく選択するにはどうすればよいですか?

XPath で CSS クラスを正しく選択するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-08 22:46:14
オリジナル
743 人が閲覧しました

How to Correctly Select a CSS Class with XPath?

XPath を使用した CSS クラスの選択

Web スクレイピングのコンテキストでは、CSS クラスに基づいて特定の要素を正確にターゲットにすることが重要です。 CSS セレクターは、HTML を操作する場合には簡単ですが、XML ドキュメントを処理する場合や高度な Web スクレイピング技術を利用する場合には、XPath が必要になります。

問題: XPath を使用した単一クラスの選択

この質問は、 XPath を使用して「日付」クラスのみに基づいて要素を選択する必要があります。ただし、提供されたコード スニペットは予期しない結果を生成します。

//[@class="date"]
ログイン後にコピー

解決策: 正しい XPath 相当

XPath で特定のクラスを持つ要素を適切に選択するには、次の構文を使用する必要があります。

//*[contains(concat(" ", normalize-space(@class), " "), " foo ")]
ログイン後にコピー

この中で式:

  • normalize-space(@class) は、先頭と末尾のスペースを削除し、複数のスペースを 1 つにまとめて、クラス属性の書式が一貫していることを保証します。
  • concat(" ", Normalize-space(@class), " ") は、正規化されたクラス値の周囲にスペースを追加して、ターゲット クラスと比較できるようにします。 name.
  • contains(...) は、変更されたクラス属性値内のターゲット クラス名を検索します。

誤ったアプローチの回避

一般的だが欠陥のある 2 つの XPath避けるべきセレクターには以下が含まれます:

  • //*[@class="date"]: しません複数のクラスを持つ要素を考慮します。
  • //*[contains(@class, "date")]: 「foobar」など、「date」を含むクラス名を持つ要素と一致します。これは正しくありません。

クレジット

ここで提供される解決策は、この特定の問題に対処する貴重なブログ投稿を公開した仲間の Web スクレーパーによるものです。洞察を共有してくれた彼らに感謝します。

以上がXPath で CSS クラスを正しく選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート