Michi: Skript zum Absuchen von Seiteninhalten

Hallo,

was gibts denn an im Quellcode zugänglichen Skripten (vorzugsweise PHP), die ausgehend von einer gegebenen URL rekursiv alle verlinkten Unterseiten nach best. Strings bzw. Mustern absuchen, ähnlich einem Suchmaschinen-Bot?

Gruß Michi

  1. Hallo Michi,
    Wenns wirklich so was wie eine Suchmaschine sein soll,
    dann gibt es da vieles im Vorfeld zu beachten. Da solltest
    du kein fertiges Script nehmen, denn mit der Zeit ergeben
    sich immer Wünsche und Veränderungen die du nur mit einem
    Script bewältigst dass du zu 100% kennst.

    Du benötigst zunächst mal eine Funktion die
    einen Link in einem Text findet.
    Das geht zwar recht simple mit stringfunktionen
    aber schnell werden deine Anysprüche wachsen, daher
    solltest du dich von vornerein mit regulären Ausdrücken
    beschäftigen, sofern du dass nicht eh schon beherrschst.

    Hilfe dazu findest du zb. http://www.php-faq.de/q/q-regexp-links-finden.html@title:köhntopp

    Dann wirst du irgendwann eine Funktion haben die
    Links findet, relative Links umwandelt und jegliche
    Linkvariation erkennt. Als Resultat dieser Funktion
    sollte ein mehrdimensionales Array zurück kommen, dass mindestens
    den Link und optional alles was du für eine statistische
    Auswertung möchtest beinhält. Zum Beispiel Linkname,
    Gruppe, linkaufbau, Erreichbarkeit usw.

    Wenn diese Funktion sauber läuft einfach sich selbst weiter
    aufrufen lassen mit dem Argument des jeweiligen Links.
    Also rekursiv.

    !!!! VORSICHT HIER KANN ES SCHNELL ZU EINER ENDLOSSCHLEIFE KOMMEN !!!

    Also vorher genau festlegen wieviele Links/Tiefen abgesucht
    werden sollen und UNBEDINGT einen Notstop einbauen mit
    einer Festen Zahl an erlaubten Durchläufen.

    ---------------------------------------
    Danach beginnt der erfreuliche Teil, denn wenn das
    soweit läuft siehst du erst wo deine Ansprüche sind
    und kannst so dass nach und nach den Wünschen entsprechend
    anpassen.

    ------------------------------

    Vielleicht sieht meine Antwort kompliziert aus
    ist es aber nicht wirklich. Auch wenn Du vielleicht
    ein fertiges Script erhofft hast, solltest du nicht
    nehmen in diesem speziellen Fall.

    Aber wenn du das anders siehst ein paar scripte
    findest du hier bei den Kommentaren:
    http://nl3.php.net/manual/de/function.preg-match-all.php

    ----------------------------------------------------
    function get_urls($string, $strict=true) {

    $types = array("href", "src", "url");
       while(list(,$type) = each($types)) {
           $innerT = $strict?'[a-z0-9:?=&@/._-]+?':'.+?';
           preg_match_all ("|$type=(["'`])(".$innerT.")\1|i", $string, &$matches);
           $ret[$type] = $matches[2];
       }

    return $ret;
    };

    --------------------------------------------------------

    Gruss
    Nikki