Maison >développement back-end >tutoriel php >Comment sélectionner correctement une classe CSS avec XPath ?

Comment sélectionner correctement une classe CSS avec XPath ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-08 22:46:14715parcourir

How to Correctly Select a CSS Class with XPath?

Sélectionner une classe CSS avec XPath

Dans le contexte du web scraping, cibler avec précision des éléments spécifiques en fonction de leurs classes CSS est crucial. Bien que les sélecteurs CSS soient simples lorsque vous travaillez avec HTML, XPath devient nécessaire lors du traitement de documents XML ou de l'utilisation de techniques avancées de web scraping.

Problème : sélection d'une seule classe avec XPath

Cette question découle de la devez sélectionner des éléments en fonction uniquement de leur classe "date" à l'aide de XPath. Cependant, l'extrait de code fourni produit des résultats inattendus.

//[@class="date"]

Solution : l'équivalent XPath correct

Pour sélectionner correctement les éléments avec une classe spécifique dans XPath, la syntaxe suivante doit être utilisée :

//*[contains(concat(" ", normalize-space(@class), " "), " foo ")]

Dans cette expression :

  • normalize-space (@class) supprime le début et la fin espaces et réduit plusieurs espaces en un seul, garantissant que l'attribut de classe est formaté de manière cohérente.
  • concat(" ", normalize-space(@class), " ") ajoute des espaces autour de la valeur de classe normalisée pour la rendre comparable au nom de la classe cible.
  • contient(...) recherche le nom de la classe cible dans la valeur de l'attribut de classe modifiée.

Éviter les erreurs Approches

Deux sélecteurs XPath courants mais défectueux à éviter incluent :

  • //*[@class="date"] : ne prend pas en compte les éléments avec plusieurs classes.
  • //*[contains(@class, "date")] : fait correspondre les éléments dont les noms de classe contiennent "date", comme "foobar", qui est incorrect.

Crédit

La solution fournie ici est attribuée à un autre grattoir Web qui a publié un article de blog précieux traitant de ce problème spécifique. Notre gratitude leur va pour avoir partagé leurs idées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn