2010-12-02 1 views

Antwort

16

Ja im eingebauten DOM aussehen. Einfaches HTML-Dokument ist in Ordnung, aber eine Reihenfolge von magnitude slower als der integrierte Dom-Parser.

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

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

Verwenden Sie das.

+0

gibt es eine Möglichkeit, 'query' einen Knoten anstelle einer Nodelist zurückgeben? Zum Beispiel hat eine Seite nur ein h1-Tag. Ich möchte seinen nodeValue bekommen, aber glaube nicht, dass ich eine Nodeliste durchlaufen muss. – StackOverflowNewbie

+1

Sie sollten '$ node [0]' verwenden können, um den ersten Knoten in der Liste zu erhalten. Oder iterieren und brechen Sie einfach. Ich wiederhole und breche nur. Wenn die Abfrage nichts zurückgibt, werden auf diese Weise keine Fehler angezeigt. –

1

Kürzlich fand ich auch ganon, aber im Allgemeinen PHP Simple HTML DOM Parser ist das beste!

+1

PHP Einfache HTML-DOM Parser Drosseln, wenn Sie versuchen, mehrere Seiten, z. Stufe 1: Erhalten Sie 300 Links (z. B. aus einer Liste) level2: Gehen Sie zu jedem Link und rufen Sie die Seite mit Details ab und holen Sie Elemente. Alles, was Sie bekommen, ist eine Sammlung von Reset-Fehlern (je nach Server-Typ) - plus es ist sehr langsam – Jeffz

+0

Ganon nur 2 Element meiner Wünsche laden und wenn versuchen, einfach zu starten html dom Parser meinen Computer gehängt !!! – zhilevan

+0

Ich fand, dass Ganon viel langsamer als das in PHP eingebaute DOM sowie der einfache HTML-DOM-Parser ist. Außerdem scheint Simple HTML DOM unter schwerem Speicherverlust zu leiden und Sie müssen die zugewiesenen Objekte manuell bereinigen oder wiederverwenden. – jahackbeth