Recherche d'éléments par classe CSS à l'aide de XPath
Dans le web scraping, il est souvent nécessaire de localiser les éléments HTML en fonction de leur classe CSS. XPath, un outil puissant pour naviguer dans les documents XML et HTML, fournit un moyen d'y parvenir.
Considérez une page HTML avec un élément div ayant une classe nommée « Test ». La requête XPath suivante peut être utilisée pour trouver cet élément :
//*[contains(@class, 'Test')]
Cette requête sélectionne tous les éléments qui contiennent la classe "Test" , quel que soit leur emplacement dans l'arborescence du document.
Pour optimiser les performances, vous pouvez affiner la recherche à des types d'éléments spécifiques, tels que les div. Par exemple, la requête suivante limitera la recherche aux divs contenant la classe « Test » :
//div[contains(@class, 'Test')]
Cependant, si vous avez éléments avec des classes comme « Testvalue » ou « newTest », la requête ci-dessus leur correspondra également. Pour garantir une correspondance plus précise, vous pouvez utiliser une chaîne concaténée contenant un espace avant et après la classe "Test", comme suggéré par @Tomalak:
//div[contains(concat(' ', @class, ' '), ' Test ')]
Cette requête ne correspondra qu'aux div qui ont le mot « Test » comme valeur de classe distincte.
Pour éliminer en cas de problème d'espace, vous pouvez également normaliser les espaces à l'aide de la fonction normalize-space, comme suggéré par @Terry:
//div[contains(concat(' ', normalize-space(@class), ' '), ' Test ')]
Enfin, il est important de remplacer l'astérisque (*) dans ces requêtes par le nom de l'élément réel que vous souhaitez faire correspondre, sauf si vous souhaitez rechercher tous les éléments dans le document. Cela améliorera l'efficacité de la requête.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3