2010-12-02 27 views

Respuesta

16

Sí. El documento html simple está bien, pero es un pedido de magnitude slower que el analizador dom incorporado.

$dom = new DOMDocument(); 
@$dom->loadHTML($html); 
$x = new DOMXPath($dom); 

foreach($x->query("//a") as $node) 
{ 
    $data['dom']['href'][] = $node->getAttribute("href"); 
} 

Utilícelo.

+0

¿hay alguna manera de hacer que 'query' devuelva un nodo en lugar de una lista de nodos? Por ejemplo, una página tiene solo una etiqueta h1. Quiero obtenerlo es nodeValue, pero no creo que deba iterar a través de una lista de nodos. – StackOverflowNewbie

+1

Debería poder usar '$ node [0]' para obtener el primer nodo en la lista. O simplemente iterar y romper. Solo iterar y romper. Si la consulta no devuelve nada, no obtendré ningún error de esa manera. –

1

Recientemente también encontré ganon, pero en general PHP Simple HTML DOM Parser es el mejor!

+1

PHP El analizador de DOM HTML simple se bloquea, si intenta rastrear varias páginas, p. nivel 1: obtenga 300 enlaces (por ejemplo, de un listado) level2: vaya a cada enlace y recupere la página con detalles y elementos de búsqueda. Todo lo que obtienes es una colección de errores de reinicio (dependiendo del tipo de servidor) - además es muy lento – Jeffz

+0

ganon solo carga 2 elementos de mis deseos y cuando intento ejecutar el analizador html dom mi computadora se cuelga !!! – zhilevan

+0

Descubrí que el ganon es mucho más lento que el DOM integrado en PHP, así como el analizador de DOM simple HTML. Además, el HTML simple DOM parece sufrir una gran pérdida de memoria y debe limpiar o reutilizar manualmente los objetos asignados. – jahackbeth