Kürzlich möchte ich einen Crawler verwenden, der das Parsen von HTML erfordert. Ich habe auf SourceForge ein Projekt namens PHP Simple HTML DOM Parser gefunden, das bestimmte DOM-Elemente auf ähnliche Weise wie jQuery zurückgeben kann sehr kraftvoll.
Führen Sie zuerst die Datei simple_html_dom.php am Anfang des Programms ein.
Kopieren Sie den Code. Der Code lautet wie folgt:
include_once('simple_html_dom.php');
PHP Simple HTML DOM Parser bietet 3 Typen. Die Art und Weise, ein DOM-Objekt
zu erstellen, ist wie folgt:
// Erstellen Sie ein DOM-Objekt aus einer Zeichenfolge
$html = str_get_html('
Hallo!< ;/body> html>');
// Erstellen Sie ein DOM-Objekt aus einer URL
$html = file_get_html('http://www.google.com/'); / Erstellen Sie ein DOM-Objekt aus einer HTML-Datei
$html = file_get_html('test.htm');
Nachdem Sie das DOM-Objekt erhalten haben, können Sie verschiedene Vorgänge ausführen
Kopieren Sie den Code Der Code ist wie folgt:
// Alle Anker finden, gibt ein Array von Elementobjekten zurück
$ret = $html->find('a');
// (N)ten Anker finden, gibt Element zurück Objekt oder null, wenn nicht gefunden (nullbasiert)
$ret = $html->find('a', 0); Letzten Anker suchen, Elementobjekt zurückgeben oder null, wenn nicht gefunden (nullbasiert). )
$ret = $html-> ;find('a', -1);
// Alle
finden
$ret = $html->find( 'div[id]');
// Alle
finden, deren Attribut id=foo
$ret = $html->find('div[id=foo]');
Hier können verschiedene CSS-Selektoren verwendet werden, genau wie die DOM-Manipulation in jQuery, sehr praktisch. Darüber hinaus gibt es zwei spezielle Attribute, um den Inhalt von Text und Kommentaren abzurufen
Kopieren Sie den Code. Der Code lautet wie folgt:
// Alle Textblöcke finden
$es = $html->find( 'text') ;
// Alle Kommentarblöcke () finden
$es = $html->find('comment');
Natürlich unterstützt PHP Simple HTML DOM Parser immer noch ähnlich wie jQuery auch Kettenoperationen und verschiedene einfache Methoden für den Zugriff auf DOM-Elemente
Code kopieren Der Code lautet wie folgt:
// Beispiel
echo $html ->find( "#div1", 0)->children(1)->children(1)->children(2)->id
// oder
echo $html ->getElementById( "div1")->childNodes(1)->childNodes(1)->childNodes(2)->getAttribute('id');
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn