Punktuelles im Web Über mich

Hallo und ich bitte Sie um einen kleinen Moment Ihrer Aufmerksamkeit. Diese Webseiten sind umgezogen, genauer gesagt ist dies ein alter Stand, der etwa 9 Jahre alt ist aus einer alten Sicherung wieder auferstanden ist. Inklusive eines HTML-Parsers in PHP und der alten, originalen Inhalte - die natürlich (Stand November 2018) nach und nach aktualisiert werden. Sehen Sie es als Nostalgie oder einfach Spaß an der Sache.
Vielen Dank!

Bilder von fremden Webseiten grabben

Ist jemand zu Hause?

PHP bietet die Möglichkeit über den Tellerrand des eigenen Servers zu blicken - im konkreten Fall wollen wir dies nutzen um Bilder von einem fremden Webserver zu zu kopieren.

Wir bauen uns eine überraschend einfache Funktion mit der wir den gewünschten Inhalt holen (file_get_contents) und in eine Datei schreiben (file_put_contents). Schon haben wir die fremde Grafik zu unserer Verfügung und könnten sie weiter verarbeiten.

holeBild('http://www.domain.nan/Bilder/Blume.jpg', 'bild.jpg');

function holeBild($Url, $Bild)
{
    file_put_contents( $Bild, file_get_contents($Url) ); 
}

Leider ist dieser direkte und einfache Zugriff auf fremde Inhalte nicht auf jedem Webspace erlaubt. In diesen Fällen ist manchmal der Zugriff auf ein Tool namens CURL eingerichtet. CURL bietet mehr Sicherheit und nebenbei auch eine Vielzahl weiterer Optionen. Wir interessieren uns aber diesmal nur für unsere Bilder.

holeBildCurl('http://www.domain.nan/Bilder/Blume.jpg', 'curl.jpg');

function holeBildCurl($Url, $Bild)
{
    $CURLHandle = curl_init($Url); 
    $DateiHandle = fopen($Bild, 'wb'); 
    
        curl_setopt($ch, CURLOPT_TIMEOUT, 3);
        
        curl_setopt($CURLHandle, CURLOPT_FILE, $DateiHandle); 
        curl_setopt($CURLHandle, CURLOPT_HEADER, 0); 
        curl_exec($CURLHandle); 
        curl_close($CURLHandle); 
        
    fclose($DateiHandle);
    
    return;
}

Um zu verhindern, dass das Programm abbricht falls ein Server nicht erreichbar oder ein Bild nicht vorhanden ist, setzen wir die Option TIMEOUT auf (beispielsweise) 3 Sekunden. Nach dieser Zeit wird die altuelle Operation mit CURL beendet, das Programm aber regulär weiter ausgeführt. Weitere Informationen zu CURL finden Sie auf php.net.

Ein Hinweis: Auch wenn durch einen Timout ein Abbruch verhindert werden kann, wenn ein Bild nicht vorhanden oder nicht erreichbar ist, wird ein vorhandenes lokales Bild dennoch überschrieben, bzw. es wird ein Bild mit 0-Grösse erstellt.
Wer hier sauber arbeiten will, sollte das zu herunterladende Bild unter einem temporären Namen laden und erst nach einer Prüfung umbenennen.

http://www.punktuelles-im-web.net BilderGrabben.html, zuletzt geändert: 21.6.2010 12:41:00.