Skript zum Absuchen von Seiteninhalten
Michi
- php
0 Nicole
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
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