2010-12-02 7 views

Répondre

16

Oui. Doc simple html est très bien, mais un ordre de magnitude slower que l'analyseur dom intégré.

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

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

Utilisez cela.

+0

est-il un moyen de rendre 'query' retourner un nœud au lieu d'une nodelist? Par exemple, une page n'a qu'une seule étiquette h1. Je veux que ce soit nodeValue, mais je ne pense pas que je devrais passer par une nodelist. – StackOverflowNewbie

+1

Vous devriez pouvoir utiliser '$ node [0]' pour obtenir le premier noeud de la liste. Ou juste itérer et casser. Je viens itérer et casser. Si la requête ne renvoie rien, je ne reçois aucune erreur de cette façon. –

1

Récemment, j'ai également trouvé ganon, mais en général PHP Simple HTML DOM Parser est le meilleur!

+1

PHP Simple HTML DOM L'analyseur syntaxique étouffe, si vous essayez d'explorer plusieurs pages, par ex. niveau 1: obtenez 300 liens (par exemple à partir d'une liste) level2: accédez à chaque lien et récupérez la page avec les détails et récupérez les éléments. Tout ce que vous obtenez est une collection d'erreurs de réinitialisation (en fonction du type de serveur) - plus il est très lent – Jeffz

+0

ganon seulement charger 2 élément de mes besoins et quand essayer d'exécuter simple html dom parser mon ordinateur pendu !!! – zhilevan

+0

J'ai trouvé que ganon était beaucoup plus lent que DOM construit en PHP, ainsi que Simple HTML DOM Parser. De plus, Simple HTML DOM semble souffrir de lourdes pertes de mémoire et vous devez nettoyer ou réutiliser manuellement les objets alloués. – jahackbeth

Questions connexes