Sie ziehen Ihre alte Website auf eine neue Plattform um. Die Agentur, die sie gebaut hat, gibt es nicht mehr, Sie haben keinen Serverzugang, und auf den Produktseiten liegen einige Hundert Fotos. Jedes einzeln von Hand zu speichern, würde Tage dauern, und die ersten, die Sie ausprobiert haben, sind kleiner und unschärfer herausgekommen, als sie auf der Seite aussehen.
Diese Anleitung gilt für Bilder, die Sie kopieren dürfen: Ihre eigene Website, das Pressekit, das eine Organisation Journalisten anbietet, oder offen lizenzierte Bilder, deren Bedingungen Sie einhalten. Die Produktfotos eines Wettbewerbers für den eigenen Shop zu übernehmen, gehört nicht dazu, und dass Sie ein Bild herunterladen können, gibt Ihnen noch nicht das Recht, es zu verwenden (Ist Web Scraping legal?). Unten finden Sie vier Wege, alle Bilder einer Seite ohne Code zu speichern, die Gründe, warum Bilder klein ankommen oder fehlen, den Umgang mit WebP-Dateien und ein optionales Python-Skript.
Woher kommen die Bilder auf einer Seite?
Jedes Bild auf einer Seite ist eine eigene Datei. Die Seite selbst ist eine Textdatei (HTML), die angibt, wo jedes Bild liegt, und Ihr Browser ruft jedes Bild mit einer eigenen Anfrage ab.
Ein Bild gelangt auf drei Wegen in die Seite: über ein img-Tag, das Sie per Rechtsklick speichern können; über einen CSS-Hintergrund, weshalb manche Banner keine Speicheroption anbieten; oder über ein picture-Element, das dasselbe Bild in mehreren Formaten und Größen auflistet und den Browser wählen lässt.
Viele Websites liefern Bilder über ein CDN (Content Delivery Network) aus, einen Verbund von Servern, der Dateien von einem Standort in der Nähe des Besuchers ausliefert. Deshalb wirken die Dateinamen oft zufällig.
Wie laden Sie alle Bilder einer Webseite herunter?
Jede der folgenden Methoden folgt denselben vier Schritten:
- Öffnen Sie die Seite und scrollen Sie ganz nach unten. Weiter unten liegende Bilder laden oft erst, wenn Sie sie erreichen.
- Wählen Sie eine Methode aus der Tabelle unten.
- Räumen Sie den Ordner auf. Löschen Sie Logos, Icons und Tracking-Bilder, die nur ein Pixel groß sind.
- Prüfen Sie die Größe. Ist ein Bild kleiner, als es auf dem Bildschirm wirkte, suchen Sie die Adresse der vollen Größe.
| Methode | Was Sie erhalten | Beim Scrollen geladene Bilder | Volle Größe? | Geeignet für |
|---|---|---|---|---|
| Chrome: Seite speichern unter > Webseite, vollständig | Eine HTML-Datei plus einen Ordner mit ihren Dateien | Per Skript geladene erst nach dem Scrollen | Nein, die für Ihren Bildschirm gewählte Kopie | Eine Seite, ohne Installation |
| Bilder-Downloader-Erweiterung | Die Bilder, die Sie nach dem Filtern ankreuzen | Ja, wenn Sie vorher gescrollt haben | Meist die Kopie vom Bildschirm | Einige Seiten, Sortieren nach Größe |
| Firefox: Seiteninformationen > Medien | Alle Bilder der Seite, einschließlich Hintergründen | Ja, wenn Sie vorher gescrollt haben | Die Kopie, die die Seite geladen hat | Firefox, ohne Add-ons |
| DevTools > Network > Img | Eine Datei nach der anderen, mit ihrer echten Adresse | Ja, während Sie scrollen | Ja, wenn Sie die größte Kopie wählen | Einige Bilder in voller Größe |
| Python-Skript (fortgeschritten) | Alle img- und source-Adressen im HTML | Liest data-src, übersieht per JavaScript hinzugefügte Bilder | Wählt die größte srcset-Kopie | Wiederkehrende Aufgaben |
Alle Bilder mit Chromes „Webseite, vollständig“ speichern
Für diese Methode müssen Sie nichts installieren. Öffnen Sie die Seite, scrollen Sie nach unten, öffnen Sie dann oben rechts das Dreipunkt-Menü und wählen Sie Streamen, speichern und teilen > Seite speichern unter… (Strg+S, auf dem Mac Cmd+S), wie es die Chrome-Hilfe beschreibt.
Stellen Sie als Format Webseite, vollständig ein und klicken Sie auf Speichern. Chrome legt eine .html-Datei an und daneben einen gleichnamigen Ordner mit einem angehängten Zusatz (in der englischen Oberfläche _files). Die Bilder liegen in diesem Ordner zwischen Stylesheets und Skripten; sortieren Sie ihn nach Typ, um sie zu finden.
Chrome speichert die Dateien, auf die die Seite in diesem Moment verweist. Bilder, die ein Skript erst beim Scrollen einsetzt, fehlen also, wenn Sie nie gescrollt haben. Außerdem erhalten Sie die Kopien, die Ihr Bildschirm bekommen hat, und nicht immer die Originale.
Wie nutzen Sie eine Bilder-Downloader-Erweiterung?
Suchen Sie im Chrome Web Store nach „image downloader“, um Erweiterungen zu finden, die alle Bilder im geöffneten Tab auflisten. Wir nennen keine, weil sie häufig den Besitzer wechseln. Die meisten funktionieren so:
- Installieren Sie die Erweiterung, öffnen Sie die Seite und scrollen Sie ganz nach unten.
- Klicken Sie auf das Symbol der Erweiterung. Ein Raster mit den Bildern der Seite erscheint.
- Erhöhen Sie den Filter für die Mindestbreite, bis Icons und Vorschaubilder verschwinden.
- Kreuzen Sie die gewünschten Bilder an und klicken Sie auf Download.
Damit sich nicht für jedes Bild ein eigenes Speicherfenster öffnet, gehen Sie zu Einstellungen > Downloads und schalten Vor dem Download nach dem Speicherort der einzelnen Dateien fragen aus.
Lesen Sie vor der Installation die Berechtigungen. Viele dieser Erweiterungen verlangen die Berechtigung „Alle Ihre Daten auf allen Websites lesen und ändern“ und sehen damit jede Seite, die Sie öffnen. Prüfen Sie die Bewertungen, das letzte Update und den Entwickler, und entfernen Sie die Erweiterung, wenn die Arbeit erledigt ist.
Alle Bilder über das Firefox-Fenster „Seiteninformationen“ speichern
Firefox bringt dafür einen eingebauten Weg mit. Drücken Sie Strg+I (auf dem Mac Cmd+I), um das Fenster Seiteninformationen zu öffnen, und wechseln Sie dann zum Tab Medien.
Die Liste zeigt jedes Bild, das die Seite verwendet, einschließlich Hintergründen und Icons, jeweils mit Adresse und Typ. Klicken Sie auf Alle auswählen, dann auf Speichern unter…, und wählen Sie einen Ordner. Rechnen Sie damit, danach einige Icons löschen zu müssen.
Wie finden Sie mit den DevTools die echte Adresse eines Bildes?
Die DevTools (Entwicklertools) sind ein in Chrome eingebautes Panel, das alles zeigt, was eine Seite lädt. Darüber finden Sie die Datei in voller Größe.
- Drücken Sie F12 und öffnen Sie den Tab Network (in der deutschen Oberfläche Netzwerk).
- Klicken Sie auf den Filter Img, einen der Typfilter, die Chromes Referenz zum Network-Panel aufführt.
- Laden Sie die Seite neu und scrollen Sie nach unten. Die DevTools zeichnen Anfragen nur auf, solange sie geöffnet sind.
- Jede Zeile zeigt den Dateinamen, den Typ (webp, avif, jpeg) und die Größe. Klicken Sie auf eine Zeile, um eine Vorschau zu sehen.
- Klicken Sie mit der rechten Maustaste auf die Zeile, wählen Sie Copy > Copy URL (deutsch Kopieren > URL kopieren), öffnen Sie die Adresse in einem neuen Tab und speichern Sie das Bild dort.
Für ein einzelnes Bild klicken Sie es mit der rechten Maustaste an und wählen Untersuchen. Hat sein img-Tag ein srcset-Attribut, listet es mehrere Kopien mit einer Breitenangabe hinter jeder auf, etwa photo-400.jpg 400w, photo-1600.jpg 1600w. Die größte Zahl steht für die größte Kopie.
Den Seitenquelltext (Strg+U) nach „.jpg“ zu durchsuchen, übersieht vieles: Der Quelltext ist das HTML, das der Server zuerst geschickt hat, also fehlen darin Bilder, die später per JavaScript hinzugefügt wurden.
Warum werden Bilder klein, unscharf oder gar nicht heruntergeladen?
1. Ihr Browser hat eine kleine Kopie gewählt. Mit srcset listet eine Website dasselbe Bild in mehreren Breiten auf. Laut der Referenz zum img-Element von MDN wählt der Browser nach eigenem Ermessen zwischen diesen Quellen. In einem schmalen Fenster nimmt er meist eine kleinere, und genau die speichern Sie.
2. Das Bild war noch nicht geladen. Ein Tag mit loading="lazy" wartet, bis das Bild in die Nähe des Bildschirms kommt. Andere Websites legen die echte Adresse in einem data-src-Attribut ab und zeigen einen leeren oder verschwommenen Platzhalter, bis ein Skript sie einsetzt. Es ist derselbe Mechanismus, mit dem Seiten nach dem ersten Laden per JavaScript gefüllt werden (Statische und dynamische Seiten beim Web Scraping).
3. Vorschaubild und volles Bild sind getrennte Dateien. Auf books.toscrape.com, einer eigens für Scraping-Übungen gebauten Website, ist das Cover von „A Light in the Attic“ auf der Startseite 125 × 155 Pixel groß und auf der eigenen Seite des Buchs 318 × 395 Pixel.
4. Die Adresse fordert eine kleine Kopie an. Viele Bild-CDNs schreiben die Größe in die Adresse, etwa ?w=400, und skalieren das Bild entsprechend.
Zur Abhilfe verbreitern Sie das Fenster, scrollen die ganze Seite durch, öffnen vor dem Speichern das große Galeriebild oder nehmen in den DevTools die größte srcset-Kopie.
Wie öffnen Sie Bilder, die als WebP oder AVIF ankommen?
WebP und AVIF sind neuere Formate, die kleinere Dateien erzeugen als JPEG. Laut dem Leitfaden zu Bildformaten von MDN sind verlustbehaftete WebP-Bilder bei vergleichbarer Kompression im Schnitt 25 bis 35 % kleiner als JPEG, und WebP wird von aktuellen Browsern breit unterstützt.
Eine Adresse kann verschiedenen Programmen unterschiedliche Formate schicken. Als wir ein Bild bei einem Bild-CDN angefordert haben, erhielt eine einfache Anfrage ein JPEG und eine Anfrage mit dem Accept-Header, den Chrome sendet, ein AVIF. Deshalb kommt eine erwartete .jpg-Datei als .webp oder .avif an.
Unter Windows 11 öffnet Paint WebP-Dateien: Wählen Sie Datei > Speichern unter und dann JPEG. Für AVIF-Dateien brauchen Sie unter Umständen Microsofts kostenlose AV1 Video Extension aus dem Microsoft Store. Bei Dutzenden Dateien erledigt ein Stapelkonverter für Bilder die Arbeit in einem Durchgang.
Für Fortgeschrittene: die Bilder einer Seite mit Python herunterladen
Dieser optionale Abschnitt richtet sich an alle, die die Aufgabe regelmäßig erledigen, etwa für ein monatliches Backup der eigenen Website. Sie brauchen Python 3.10 oder neuer und pip install requests beautifulsoup4. Das Skript:
- sendet einen
User-Agent, der das Skript benennt und eine Kontaktadresse angibt (Was ist ein User-Agent?); - liest jedes
img- undpicture source-Tag und nimmt den größten Kandidaten ausdata-srcsetodersrcset, sonstdata-srcodersrc; - überspringt eingebettete
data:-Platzhalter und vervollständigt relative Adressen wie../img/photo.jpg; - streamt jede Datei innerhalb eines
with-Blocks, wie es die Requests-Dokumentation empfiehlt, und überspringt alles, was keine200mit einemimage/-Typ ist; - überschreibt nie eine Datei (ein zweites
photo.jpgwird zuphoto-1.jpg) und wartet nach jeder Adresse eine Sekunde, auch nach übersprungenen.
import mimetypes
import time
from pathlib import Path
from urllib.parse import urljoin, urlsplit
import requests
from bs4 import BeautifulSoup
PAGE_URL = "https://example.com/gallery/" # eine Seite, die Ihnen gehört oder die Sie kopieren dürfen
FOLDER = Path("images")
DELAY = 1.0 # Sekunden zwischen den Downloads
HEADERS = {"User-Agent": "image-backup/1.0 (contact: you@example.com)"}
def largest_candidate(srcset):
"""Gibt die URL mit dem größten w- oder x-Wert in einem srcset zurück."""
best_url, best_size = None, -1.0
for part in srcset.split(","):
bits = part.split()
if not bits:
continue
size = 1.0
if len(bits) > 1 and bits[1][-1] in "wx":
size = float(bits[1][:-1])
if size > best_size:
best_url, best_size = bits[0], size
return best_url
def image_urls(html, base_url):
soup = BeautifulSoup(html, "html.parser")
urls = []
for tag in soup.select("img, picture source"):
srcset = tag.get("data-srcset") or tag.get("srcset")
url = largest_candidate(srcset) if srcset else None
url = url or tag.get("data-src") or tag.get("src")
if url and not url.startswith("data:"): # eingebettete Platzhalter überspringen
full = urljoin(base_url, url)
if full not in urls:
urls.append(full)
return urls
def free_name(url, content_type):
"""Wählt einen Dateinamen, der keinen früheren Download überschreibt."""
name = Path(urlsplit(url).path).name or "image"
stem, suffix = Path(name).stem, Path(name).suffix
if not suffix:
suffix = mimetypes.guess_extension(content_type.split(";")[0]) or ".img"
target, n = FOLDER / f"{stem}{suffix}", 1
while target.exists():
target, n = FOLDER / f"{stem}-{n}{suffix}", n + 1
return target
FOLDER.mkdir(exist_ok=True)
with requests.Session() as session:
session.headers.update(HEADERS)
page = session.get(PAGE_URL, timeout=15)
page.raise_for_status()
for url in image_urls(page.text, page.url):
try:
with session.get(url, stream=True, timeout=30) as r:
ctype = r.headers.get("Content-Type", "")
if r.status_code != 200 or not ctype.startswith("image/"):
print("skipped", r.status_code, ctype, url)
continue
target = free_name(url, ctype)
with open(target, "wb") as f:
for chunk in r.iter_content(chunk_size=64 * 1024):
f.write(chunk)
print("saved", target.name)
except requests.RequestException as exc:
print("failed", url, type(exc).__name__)
finally:
time.sleep(DELAY) # läuft auch nach einer übersprungenen DateiWir haben es mit Python 3.13, Requests 2.34.2 und Beautiful Soup 4.15.0 auf einer lokalen Testseite ausgeführt: Es wählte die 1600w-Kopie statt der 400w-Kopie, fand die Adresse hinter einem data:-Platzhalter, hielt zwei photo.jpg-Dateien auseinander und übersprang eine 404. Auf books.toscrape.com speicherte es die 20 Vorschaubilder der Startseite. Beginnen Sie jeden Lauf mit einem leeren Ordner.
Eine Wiederholungslogik gibt es nicht: Antwortet ein Server mit 429, lesen Sie zuerst HTTP-Statuscodes beim Web Scraping. Parallele Downloads (Concurrency und Parallelism) und Proxys fehlen ebenfalls, weil das Backup der eigenen Website keines von beiden braucht. Relative Adressen erklären wir im Artikel über Paginierung und relative Links, das Auslesen von Attributen in unserem BeautifulSoup-Tutorial. Wer im Terminal arbeitet, findet rücksichtsvolle Optionen für rekursive Downloads in Proxy-Nutzung mit wget.
Anwendungsfälle
- Umzug der eigenen Website. Prüfen Sie zuerst, ob Ihr CMS einen Medienexport anbietet (Daten von Websites extrahieren).
- Ein Pressekit. Organisationen veröffentlichen Veranstaltungsfotos und Logos für Journalisten, meist mit Bedingungen zur Quellenangabe (Ist Web Scraping legal?).
- Offen lizenzierte Archive. Behalten Sie die geforderte Namensnennung bei und lesen Sie vor einem Download per Skript die robots.txt-Datei der Website.
- Prüfung des eigenen Shops. Das Skript gibt jedes Bild aus, das einen Fehler liefert, und damit eine schnelle Liste defekter Produktfotos (HTTP-Statuscodes beim Web Scraping).
- Viele Seiten der eigenen Website. Beginnen Sie mit der Liste der Seiten, die die Sitemap liefert (Die Sitemap einer Website finden).
Häufige Fehler
- Speichern vor dem Scrollen. Bilder, die erst beim Scrollen laden, fehlen.
- Das Vorschaubild für das Original halten.
- Die Abfrage des Speicherorts eingeschaltet lassen. Sie klicken sich durch ein Speicherfenster pro Bild.
- Eine Erweiterung installieren, ohne ihre Berechtigungen zu lesen.
- Dateien sich gegenseitig überschreiben lassen. Zwei Ordner einer Website können beide ein
photo.jpgenthalten. - Annehmen, dass ein Download Nutzungsrechte mitbringt. Prüfen Sie die Bedingungen des Eigentümers oder die Lizenz.
- Ein Skript ohne Pause laufen lassen. Hunderte Anfragen pro Minute von derselben IP-Adresse können eine kleine Website ausbremsen, und der Server antwortet womöglich mit 429 Too Many Requests.
Entscheidungshilfe
| Bedarf | Empfehlung |
|---|---|
| Alle Bilder einer Seite, ohne Installation | Ganz nach unten scrollen, dann in Chrome Seite speichern unter > Webseite, vollständig |
| Bilder von einigen Seiten, ohne Icons | Eine Bilder-Downloader-Erweiterung mit Breitenfilter; Berechtigungen prüfen, danach entfernen |
| Firefox, ohne Add-ons | Strg+I > Medien > Alle auswählen > Speichern unter… |
| Die Originalgröße eines Bildes | DevTools > Network > Img oder der größte srcset-Kandidat |
| Dateien kommen als WebP oder AVIF an, Sie brauchen JPG | In Paint öffnen und als JPEG speichern; für viele Dateien ein Stapelkonverter |
| Ein monatliches Backup der Bilder Ihrer eigenen Website | Der Medienexport Ihres CMS, sonst das Python-Skript |
| Bilder von allen Seiten einer Website | Ein Crawl: zuerst Erlaubnis und robots.txt, dann die Optionen von wget für Massen-Downloads |
Die oberen Zeilen brauchen die wenigste Vorbereitung.
Häufige Fragen
Sind Bilder-Downloader-Erweiterungen sicher?
Sie können es sein, aber die meisten brauchen die Berechtigung, Daten auf jeder besuchten Website zu lesen und zu ändern, E-Mail und Onlinebanking eingeschlossen. Wählen Sie eine mit vielen Bewertungen, einem aktuellen Update und einem namentlich bekannten Entwickler, und entfernen Sie sie danach.
Warum werden Bilder als WebP heruntergeladen?
Die Website schickt WebP oder AVIF, weil die Dateien kleiner sind, und Ihr Browser teilt dem Server mit, dass er diese Formate anzeigen kann. Aktuelle Browser und Paint unter Windows 11 öffnen WebP, und Paint kann die Datei als JPEG speichern.
Warum haben die Bilder nicht die volle Größe?
Wahrscheinlich hat die Seite Ihrem Bildschirm eine kleinere srcset-Kopie gegeben, oder Sie haben das Vorschaubild der Galerie gespeichert. Verbreitern Sie das Fenster, öffnen Sie das große Bild oder nehmen Sie in den DevTools den größten Kandidaten. Veröffentlicht die Website nur kleine Kopien, gibt es keine größere Datei.
Kann ich alle Bilder einer Webseite auf dem Smartphone herunterladen?
Mit der normalen Chrome-App unter Android nicht in einem Rutsch. Einzelne Bilder können Sie speichern: Halten Sie ein Bild gedrückt und tippen Sie auf Bild herunterladen, wie es die Android-Hilfe von Google beschreibt. Für eine ganze Seite nehmen Sie einen Computer.
Kann ich die Bilder aller Seiten einer Website auf einmal herunterladen?
Das ist ein Crawl, also ein Programm, das Links von Seite zu Seite folgt, und kein Speichern einer einzelnen Seite (Web Scraping und Web Crawling im Vergleich). Holen Sie eine Erlaubnis ein, lesen Sie die robots.txt und nutzen Sie rücksichtsvolle Einstellungen, etwa die aus dem Abschnitt zu Massen-Downloads in Proxy-Nutzung mit wget. Unternehmen, die Crawls in großem Umfang brauchen, finden mehr in unserer Web-Crawler-Lösung.
Darf ich heruntergeladene Bilder auf meiner eigenen Website verwenden?
Nur, wenn Sie das Recht dazu haben. Ein Download gibt Ihnen eine Kopie, keine Lizenz. Ihre eigenen Fotos sind unproblematisch, Bilder aus einem Pressekit folgen dessen Bedingungen, und offen lizenzierte Bilder folgen ihrer Lizenz, die oft eine Namensnennung verlangt (Ist Web Scraping legal?).
Fazit
Um alle Bilder einer Webseite herunterzuladen, scrollen Sie ganz nach unten und speichern die Seite dann in Chrome als „Webseite, vollständig“, nutzen eine Bilder-Downloader-Erweiterung oder das Firefox-Fenster „Seiteninformationen“. Kleine Bilder bedeuten meist eine kleinere srcset-Kopie oder ein Bild, das noch nicht geladen war, und die DevTools zeigen die Adresse der Datei in voller Größe. Beschränken Sie sich auf Bilder, die Sie verwenden dürfen. Muss Ihr Unternehmen regelmäßig Bilder in großem Umfang erfassen, sehen Sie sich unsere Data-Scraping-Lösungen an.




