Neu aufgelegt: Links von Webseiten parsen

Post von realloc | Einsortiert in Code, Wordpress am 17. Juni 2010 | Keine Kommentare

Vor fast 3 Jahren habe ich den Artikel Backlinks gecheckt verfasst, der erstaunlicherweise immer noch reichlich Traffic abbekommt. Dabei sind die Informationen, um es mal vorsichtig auszudrücken, schon ziemlich veraltet und lösen einige Problemstellungen auch nicht wirklich. Ich hatte es auch schon bei der Beschreibung zu myLCO angedeutet. Das Parsen von Links mittels Regular Expressions ist keine sehr gute Idee. HTML ist kontextfrei und reguläre Ausdrücke schlagen da in aller Regelmäßigkeit fehl.

Etwas erfolgversprechender sind da schon die diversen DOM-Funktionalitäten, die es seit der Einführung von PHP5 gibt. Allerdings ist der Einsatz in der realen Welt auch nicht ganz ohne Fallstricke und abgesehen davon, gibt es bereits eine Lösung, die sich bei mir bisher bewährt hat und mit der man das Problem mit einigen wenigen Zeilen Code bändigen: den PHP Simple HTML DOM Parser.

Links in HTML-Dokumenten zu parsen wird damit zum Kinderspiel. In Verbindung mit den entsprechenden WordPress-Mechanismen, die das Holen von entfernten Webseiten stark vereinfachen, fühlt sich jeder, dem vielleicht auch die jQuery-Syntax geläufig ist, gleich dreifach wohl. Mein kleines Beispiel zeigt den Einsatz in einem File, das sich in einem Unterverzeichnis der WordPress-Installation befindet. Es sollen alle nofollow-Links meiner Startseite angezeigt werden:

<?php

require ('../wp-load.php');
require_once ('simple_html_dom.php');

$result = wp_remote_get ('http://lloc.de/');
if (!is_wp_error ($result)) {
    $html = str_get_html ($result['body']);
    foreach ($html->find ('a') as $a) {
        if (isset ($a->rel) && false !== strpos ('nofollow', strtolower ($a->rel))) {
            echo $a->href . ' -> ' . $a->rel . '<br/>';
        }
    }
}

Have fun!

Möglicherweise interessiert Dich auch...

Einen Kommentar schreiben