Veröffentlichen Sie ein neues Skript in unserem Skript Archiv.
Wonach suchen Sie? Suchen
Hier können Sie die Markierungen entfernen.
<form action="" method="post">
<input type="text" name="url" value="http://" />
</form>
<?
$url = $_POST['url'];
if(isset($_POST["url"])) {
$datei = fopen("data/sitemap.txt", "w");
fwrite($datei, "");
fclose($datei);
$datei = fopen("data/backup.txt", "w");
fwrite($datei, "");
fclose($datei);
}
if($url=="") {
$url = stripslashes(urldecode($_GET["url"]));
}
if($url != "") {
/* ==========================================================================
alles was dir URL betrifft
==========================================================================*/
# URL aufteilen / parsen
$urlArray = parse_url($url);
# Das http prüfen. Bei anderen Protokollen Error melden
if($urlArray["scheme"]=="http") {
$http = "http://";
} else {
weiter("error");
exit;
}
# Den host prüfen und www entfernen
$hostControl = strpos($urlArray["host"], "www.");
if($hostControl === false) {
$host = $urlArray["host"];
} else {
$host = str_replace("www.","",$urlArray["host"]);
}
# Root URL
$root = $http.$host;
# URL nur ohne www
$url = str_replace("www.","",$url);
/* ==========================================================================
alles was den INHALT betrifft
==========================================================================*/
# Den Inhalt der Seite laden
$data = @implode("", file($url));
if($data=="") {
$backup = file_get_contents("data/backup.txt");
$backupURLs = split("[\n]",$backup);
$datei = fopen("data/backup.txt", "w");
fwrite($datei, "");
fclose($datei);
for($j=0;$j<=count($backupURLs);$j++) {
if(str_replace("www.","",$backupURLs[$j])!=$url) {
$datei = fopen("data/backup.txt", "a");
fwrite($datei, stripslashes($backupURLs[$j]."\n"));
fclose($datei);
}
}
weiter("error");
exit;
}
# Alle Links aus dem Inhalt extrahieren
# nur die a-Tags filtern
$aTags = strip_tags($data, "<a>");
preg_match_all("/<a(?:[^>]*)href=\"([^\"]*)\"(?:[^>]*)>(?:[^<]*)<\/a>/is", $aTags, $matches);
$hrefs = array_unique($matches[1]);
$linksBreak;
for($i=0;$i<=count($matches[1]);$i++) {
if($hrefs[$i]) {
$js = strpos($hrefs[$i], "javascript:");
$raute = strpos($hrefs[$i], "#");
$mailto = strpos($hrefs[$i], "mailto:");
$jpeg = strpos($hrefs[$i], ".jpeg");
$gif = strpos($hrefs[$i], ".gif");
$jpg = strpos($hrefs[$i], ".jpg");
$ico = strpos($hrefs[$i], ".ico");
$png = strpos($hrefs[$i], ".png");
if($raute === false) {
if($js === false) {
if($mailto === false) {
if($jpeg === false) {
if($gif === false) {
if($jpg === false) {
if($ico === false) {
if($png === false) {
$rel = $hrefs[$i];
$com = absolute($url,$rel);
$linksBreak .= $com."\n";
}
}
}
}
}
}
}
}
}
}
$datei = fopen("data/sitemap.txt", "a");
fwrite($datei, $url."\n");
fclose($datei);
$datei = fopen("data/backup.txt", "a");
fwrite($datei, stripslashes($linksBreak));
fclose($datei);
$backupURLs = file_get_contents("data/backup.txt");
$backupURLs = split("[\n]",$backupURLs);
$backupURLs = array_unique($backupURLs);
$datei = fopen("data/backup.txt", "w");
fwrite($datei, "");
fclose($datei);
for($i=0;$i<=count($backupURLs);$i++) {
$strpos = strpos($backupURLs[$i],$root);
if($strpos===false) {
//
} else {
if($backupURLs[$i]!="") {
$sitemapURLs = file_get_contents("data/sitemap.txt");
$sitemapURLs = split("[\n]",$sitemapURLs);
$ok = "ok";
for($j=0;$j<=count($sitemapURLs);$j++) {
if($sitemapURLs[$j]==$backupURLs[$i]) {
$ok = "ne";
}
}
if($ok=="ok") {
$datei = fopen("data/backup.txt", "a");
fwrite($datei, stripslashes($backupURLs[$i]."\n"));
fclose($datei);
}
}
}
}
weiter("normal");
}
/* ==========================================================================
Nächste Seite scannen
==========================================================================*/
function weiter($a) {
if($num=="") {
$num = 0;
}
$backupURLs = file_get_contents("data/backup.txt");
$backupURLs = split("[\n]",$backupURLs);
if($backupURLs[0]!="") {
echo "<script type='text/javascript'>document.location = 'crawler.php?url=".urlencode($backupURLs[0])."';</script>";
} else {
echo "Sitemap fertig";
}
}
/* Funktion für die absoluten Pfade */
function absolute ($absolute, $relative) {
// Link ist schon absolut
if (preg_match(',^(https?://|ftp://|mailto:|news:),i', $relative))
return $relative;
// parse_url() nimmt die URL auseinander
$url = parse_url($absolute);
// dirname() erkennt auf / endende URLs nicht
if ($url['path']{strlen($url['path']) - 1} == '/')
$dir = substr($url['path'], 0, strlen($url['path']) - 1);
else
$dir = dirname($url['path']);
// absoluter Link auf dem gleichen Server
if ($relative{0} == '/') {
$relative = substr($relative, 1);
$dir = '';
}
// Link fängt mit ./ an
elseif (substr($relative, 0, 2) == './')
$relative = substr($relative, 2);
// Referenzen auf höher liegende Verzeichnisse auflösen
else while (substr($relative, 0, 3) == '../') {
$relative = substr($relative, 3);
$dir = substr($dir, 0, strrpos($dir, '/'));
}
// volle URL zurückgeben
return sprintf('%s://%s%s/%s', $url['scheme'], $url['host'], $dir, $relative);
}
?>Kommentare
wolfi29.03.10
das skript crawlt dir nur links.. aber durch eine minimale anpassung könntest du auch den inhalt der jeweiligen seiten abspeichern. oder was meinst du mit Inhalt? in der sitemap.txt stehen die gecrawlten Links und in der backup.txt die gefundenen Links...
und dann26.03.10
ja wo steht jetzt der Inhalt drin?
Korrektur09.01.10
Man hätte ja auch erwähnen können, dass das Skript crawler.php benannt werden muss... Ansonsten aber vielen Dank ;-)
wolfi09.12.09
wüsste nicht woher? wie gesagt ist die funktion absolute nicht von mir.. aber soweit ich mich entsinne hab ich den rest selbst gecodet..
Die Zahl05.12.09
kommt mir sehr bekannt vor....
Info11.11.09
man muss zuerst auch noch einen Ordner \"data\" erstellen. In dem gleichen Verzeichnis wie das Skript liegt
Artikel
Ich garantiere nicht für die Korrektheit des Inhalts dieser Seiten. Das Risiko diesen zu verwenden liegt letztendlich beim Benutzer.
Wenn Sie diese Seite benutzen, garantieren Sie, dass Sie die Datenschutzerklärung sowie die Distanzerklärung gelesen haben.
Texte stehen unter der GNU-Lizenz für freie Dokumentation. Bildlizenzen können abweichen.
webdesign by weedesign
powered by bestells-dir.de - Dein Online Shop und party-oberbayern.de - Partys aus Oberbayern