• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Alle externen Links listen

Werbung:
Ok die hab ich, du meinst "Hervorheben/Links hervorheben/externe Links". Nicht ganz das was ich brauche. Zum einen weil es keine Liste ist die kopieren könnte, zum anderen weil es nur die links der aktuell geöffneten Seite anzeigt.
Was ich suche ist eine art "Crawler" der alle Seiten/Unterseiten der Domain abarbeitet und mir sämtliche "http://..." links auflistet.

Hintergrund; es geht um eine Veranstaltungsseite mit vielen vielen Unterseiten die an verschiedensten Stellen Links auf andere Webseiten haben, sicher über 100. Ich möchte davon möglichst einfach eine Liste erstellen um bei den jeweiligen Seitenbetreiben, wegen Linktausch nachzufragen.

Hatte die Hoffung das dafür irgendein Online-Tool gibt. Aber auch Google hat mir keine Ergebnisse geliefert.
 
Werbung:
Ich hätte eine ziemlich dumme brute force-Lösung, falls du wget ausführen kannst.

Im Verzeichnis "/home/marc/wget-test" (natürlich austauschbar, am besten neues Verzeichnis erstellen) ausführen, lädt gesamte(!) Seite herunter.

Code:
wget -r -l 0 http://example.org/

Und dann folgendes PHP-Script im Browser ausführen (Pfad wieder korrekt anpassen):

(Und eventuell Filter oder Regex ergänzen, sodass Links zur eigenen Domain, die mit http:// beginnen, nicht gefunden werden.)

PHP:
<?php

header('Content-type: text/plain; charset=utf-8');

class FileFilterIterator extends FilterIterator
{
    public function accept()
    {
        $fileInfo = parent::current();

        // Nur Dateien
        if (!$fileInfo->isFile()) {
            return false;
        }

        return true;
    }
}

$path     = '/home/marc/wget-test';
$pattern  = '#http(?:s?)://[^\'"\s]+#i';
$iterator = new FileFilterIterator(
                new RecursiveIteratorIterator(
                    new RecursiveDirectoryIterator($path)));
$final    = array();

foreach ($iterator as $file) {
    $data = file_get_contents($file);
    $test = preg_match_all($pattern, $data, $matches);

    // Doppelte Einträge vermeiden
    foreach($matches[0] as $match) {
        if (!in_array($match, $final)) {
            $final[] = $match;
        }
    }
}

foreach ($final as $url) {
    echo $url . "\n";
}

Das geht ganz sicher schlauer.

Edit: Hmm, und ein Onlinetool ist es auch nicht. Na ja.
 
Zurück
Oben