En PHP, depuis peu, et avec un relatif succès, j’expérimente :
►http://www.php.net/manual/fr/domdocument.loadhtml.php
et plus particulièrement ses méthodes :
►http://www.php.net/manual/fr/domdocument.loadhtml.php
►http://www.php.net/manual/fr/domdocument.loadhtmlfile.php
qui, toutes deux, indiquent bien que :
Contrairement au XML, le HTML n’a pas besoin d’être bien formé pour être chargé.
Ensuite, soit le parcours se fait via les méthodes DOM associées — mais alors il faut vraiment que ce soit évident à parcourir, sinon, autant revenir aux expressions rationnelles —, soit via :
►http://www.php.net/manual/fr/class.domxpath.php
Cette classe ne semble pas supporter exhaustivement toutes les possibilités du XPath en matière de syntaxe (j’ai rencontré des soucis avec les vérifications de valeurs de champs, genre « depuis ce tableau <table>, donne-moi la liste des titres de livres dont le prix est supérieur à 10 € »), mais je n’ai pas été spécialement gêné jusqu’ici par rapport à mes besoins.
Pour ce qui est de l’élaboration des expressions XPath, j’utilise Firefox et Firebug auxquels j’ajoute les extensions FirePath et XPather. Au niveau de la syntaxe de base, cette introduction est tout à fait intéressante :
►http://www.w3schools.com/xpath
On y trouve même quelques exemples plus avancés, permettant l’élaboration de recherches tout à fait sympathiques sans prise de tête. Et voici d’autres exemples de XPath représentatifs de quelques cas d’utilisation fréquents résolus facilement :
►http://www.exampledepot.com/egs/org.w3c.dom/xpath_GetElemByText.html
Enfin, pour nettoyer du HTML, j’avais récemment regardé HTML Purifier :
►http://htmlpurifier.org
sans toutefois être convaincu de son intérêt pour mes besoins. Mais ça peut éventuellement te dépanner si tu as à faire à du HTML.