Domanda

Esiste una classe / libreria PHP che mi consentirebbe di interrogare un documento XHTML con selettori CSS? Ho bisogno di raschiare alcune pagine per ottenere dati facilmente accessibili se in qualche modo potessi usare i selettori CSS (jQuery mi ha rovinato!). Qualche idea?

È stato utile?

Soluzione

Dopo aver cercato su Google (i risultati iniziali non sono stati molto utili), sembra che ci sia effettivamente una libreria Zend Framework per questo, insieme ad alcuni altri:

Altri suggerimenti

XPath è un modo abbastanza standard per accedere ai nodi XML (e XHTML) e fornisce molta più precisione rispetto ai CSS.

Un grande è un componente di symfony 2, CssSelector \ Parser & # 173; Introduzione . Converte i selettori CSS in espressioni XPath. Dai un'occhiata =)

Codice sorgente

Per jQuery gli utenti più interessanti possono essere porta di jQuery su PHP , ovvero < strong> phpQuery . Quasi tutte le sezioni della libreria sono portate. Inoltre contiene il plug-in WebBrowser , che può essere utilizzato per il Web Scraping il percorso / i processi dell'intero sito (ad esempio, l'accesso ai dati disponibili dopo l'accesso). Simula semplicemente il browser Web sul server (anche eventi e cookie). Le ultime versioni supportano sperimentalmente XML namespace e CSS3 " | " selettore .

Ho finito con PHP Query Lite , è molto semplice e ha tutto ciò di cui ho bisogno.

Per l'analisi dei documenti utilizzo DOM . Questo può facilmente risolvere il tuo problema se conosci il nome del tag (in questo esempio " 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
 }

Non sono sicuro che il DOM ti consenta di ottenere tutti gli elementi di un documento contemporaneamente ... potresti dover eseguire un attraversamento di alberi.

Ho scritto il mio, basato sul motore di selezione CSS di Mootools http://selectors.svn.exyks.org/ . si basa sull'abilità di estensione simplexml (quindi è di sola lettura)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top