PHP CSS Selector Biblioteca? [cerrado]


¿Hay una clase/biblioteca PHP que me permita consultar un documento XHTML con selectores CSS? Necesito raspar algunas páginas para los datos que es muy fácil de acceder si de alguna manera podría utilizar selectores CSS (jQuery me ha echado a perder!). Alguna idea?

Author: jjnguy, 2008-11-04

8 answers

Después de buscar más en Google (los resultados iniciales no fueron muy útiles), parece que en realidad hay una biblioteca de Zend Framework para esto, junto con algunos otros:

 40
Author: Wilco,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-12 09:59:16

XPath es una forma bastante estándar de acceder a nodos XML (y XHTML), y proporciona mucha más precisión que CSS.

 10
Author: nickf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-04 02:23:14
 6
Author: mario,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-20 00:58:42

Un gran componente es un componente de symfony 2, cssSelector\ParserIntroducción. Convierte selectores CSS en expresiones XPath. Echa un vistazo =)

Código Fuente

 6
Author: Clement Herreman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-14 11:42:20

Para jQuery los usuarios más interesante puede ser puerto de jQuery PHP, que es phpQuery. Casi todas las secciones de la biblioteca están portadas. Además contiene WebBrowser plugin, que se puede utilizar para Web Scraping ruta de todo el sitio/procesos (por ejemplo, acceder a los datos disponibles después de iniciar sesión). Simplemente simula el navegador web en el servidor (eventos y cookies también). Las últimas versiones tienen soporte experimental para XML espacios de nombres y CSS3 "|" selector.

 5
Author: Tobiasz Cudnik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-22 16:00:48

Terminé usando PHP Query Lite, es muy simple y tiene todo lo que necesito.

 3
Author: Mirko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-08 19:08:34

Para el análisis de documentos utilizo DOM. Esto puede resolver fácilmente su problema si conoce el nombre de la etiqueta (en este ejemplo "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
 }

No estoy seguro de si DOM le permite obtener todos los elementos de un documento a la vez... puede que tengas que hacer un recorrido de árbol.

 2
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-19 06:22:36

Yo escribí el mío, basado en Mootools CSS selector engine http://selectors.svn.exyks.org / . se basa en la capacidad de extensión simplexml (por lo tanto, es de solo lectura)

 1
Author: 131,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-28 14:27:38