Bilder von Webseite herunterladen

Posted on: 12. Februar 2019
Automatisch alle Bilder einer Internetseite mit Unterseiten lokal herunterladen. Dies machen wir mit dem bekannten Invoke-WebRequest befehlt und automatisieren soweit, dass alles ohne Benutzereingriff durchläuft.

Denk dran: solltest du Wünsche oder Anregungen für Themen und Beträge haben, dann lass es mich bitte wissen z.B. in einem Kommentar oder oben auf dem Input-Formular
Hier der Code aus dem Youtube-Video. Die Vorgehensweise und Bemerkungen findest du direkt als Kommentare (#Grün) im Code. So wird er dir ebenfalls in der PowerSHELL ISE angezeigt werden.
——————————————–
# Basis Webseite zum suchen            
$BasisURI = "germanpowershell.com"            
            
# Download Ordner            
$Download = "C:\Script\BilderDownload"            
            
# Array für interne Links            
$IntLinks = @()            
            
# Bilder Array            
$AlleBilder = @()            
            
# Abfragen der ersten URI (Webseite)            
$Webrequest = Invoke-WebRequest -Uri $BasisURI -UseBasicParsing            
            
# Interne Links der Basis            
$IntLinks += ($Webrequest.Links | ? {$_.href -like "*$($BasisURI.Split(".")[0])*"}).href            
            
# Bilder der Basis            
$AlleBilder += ($Webrequest.Images | Select src -Unique).src            
            
# Initiale Linkszahl            
$LinkZaehler = $IntLinks.Count            
            
for ($i = 0; $i -lt $LinkZaehler; $i++)            
    {            
            
        $Webrequest = Invoke-WebRequest -Uri $IntLinks[$i] -UseBasicParsing            
                
        # Alle internen Links zum Array hinzufügen            
        $IntLinks += ($Webrequest.Links | ? {$_.href -like "*$($BasisURI.Split(".")[0])*"}).href            
                    
        # Ausgabe des Fortschritts             
        Write-Host "Fortschritt $i/$($LinkZaehler - 1)" -ForegroundColor Yellow            
    }            
            
foreach ($Link in ($IntLinks | select -Unique))            
    {            
                
        Write-Host "Teste Bilder von URI $Link"            
        $AlleBilder += (Invoke-WebRequest -Uri $Link -UseBasicParsing).Images            
            
    }            
            
# Nur die einmaligen Bilder in Array schreiben            
$AlleBilder = $AlleBilder | select -Unique            
            
foreach ($Bild in $AlleBilder)            
{            
            
    Write-Host "Lade bild herunter von $Bild"            
                
    # Bild herunterladen und in Download Ordner speichern            
    Invoke-WebRequest -Uri $Bild -OutFile "$Download\$(Split-Path $Bild -Leaf)" -UseBasicParsing            
            
}
——————————————–
Solltest du irgendwelche Fragen haben, dann kannst du diese gerne entweder hier im Blog oder direkt unter dem YouTube Video stellen. Ich gebe alles, deine Fragen zeitnahe zu beantworten oder ein entsprechendes Video darüber zu machen.
Gerade die Grundlagen-Videos werde ich nicht mit viel Text ausschmücken. Bei mir ist jeweils jede Code-Zeile direkt im Code Kommentiert (#Grün). Du kannst den Code direkt mit in dein Script kopieren und hast so eine gute Orientierungshilfe, sobald du die Scripts auf deine Bedürfnisse anpasst.

Ich erstelle und veröffentliche sämtliche Videos kostenlos und blende auch keine Werbung ein, dies will ich auch so beibehalten. Da das vermittelte Wissen aber in teuren Kursen erlangt werden kann, ist eine kleine Spende hin und wieder sicher keine schlechte Gegenleistung.