Bibliothèque de sélecteurs CSS CSS? [fermé]
-
06-07-2019 - |
Question
Existe-t-il une classe / bibliothèque PHP qui me permettrait d’interroger un document XHTML avec des sélecteurs CSS? J'ai besoin de gratter quelques pages pour des données très facilement accessibles si je pouvais utiliser les sélecteurs CSS (jQuery m'a gâté!). Des idées?
La solution
Après Googling (les premiers résultats n’ont pas été très utiles), il semble qu’il existe une bibliothèque Zend Framework pour cela, avec quelques autres:
Autres conseils
XPath est un moyen assez standard d’accéder aux nœuds XML (et XHTML) et offre une précision bien supérieure à celle de CSS.
Un autre:
http://querypath.org/
Un excellent composant est un composant de symfony 2, CssSelector \ Parser Introduction . Il convertit les sélecteurs CSS en expressions XPath. Jetez un oeil =)
Pour les utilisateurs jQuery les plus intéressants peuvent être le portage de jQuery vers PHP , qui est < strong> phpQuery . Presque toutes les sections de la bibliothèque sont portées. En outre, il contient le plug-in WebBrowser , qui peut être utilisé pour Web Scraping le chemin / processus de l'ensemble du site (par exemple, l'accès aux données disponibles après la connexion). Il simule simplement un navigateur Web sur le serveur (événements et cookies également). Les dernières versions offrent un support expérimental pour les espaces de nom XML et le sélecteur "|" et CSS3 .
J'ai utilisé PHP Query Lite , c'est très simple et j'ai tout ce dont j'ai besoin.
Pour l'analyse de documents, j'utilise DOM . Cela peut assez facilement résoudre votre problème si vous connaissez le nom de la balise (dans cet exemple, "div"):
$doc = new DOMDocument();
$doc->loadHTML($html);
$elements = $doc->getElementsByTagName("div");
foreach ($elements as $e){
if ($e->getAttribute("class")!="someclass") continue;
//its a div.classname
}
Vous n'êtes pas sûr que DOM vous permette d'obtenir tous les éléments d'un document à la fois ... vous devrez peut-être effectuer une traversée de l'arbre.
J'ai écrit le mien, basé sur le moteur de sélection Mootools CSS http://selectors.svn.exyks.org/ . il repose sur la capacité d'extension simplexml (donc, il est en lecture seule)