Kann ich alle Bilder einer Seite herunterladen?

Gibt es eine Möglichkeit, ein Skript mit einer bestimmten Webseite als Argument auszuführen, das alle Bilder von dort herunterlädt?

Hast du dir Automator angeschaut? Es gibt bereits ein Plug-In zum Abrufen der Bild-URL von der Webseite. Seien Sie vorsichtig mit allzu weit gefassten Fragen (und überschwemmen Sie die Website mit zu vielen Fragen ohne Antworten – die Website funktioniert am besten, wenn Sie sowohl etwas zurückgeben als auch nur fragen – selbst wenn alle Fragen gut sind).

Antworten (5)

Sie können einen Automator-Workflow verwenden, um in eine Webseite eingebettete Bilder oder von einer Webseite verlinkte Bilder herunterzuladen. Ein guter Ausgangspunkt für einen Workflow ist:

  1. Holen Sie sich die aktuelle Webseite von Safari
  2. Holen Sie sich Bild-URLs von der Webseite
  3. Download-URLs

Herunterladen von Bildern von Webseiten mit Automator unter Mac OS X 10.8

Sie können den Workflow ändern, um eine Liste von Webseiten zum Abrufen zu verwenden.

Automator ist in Mac OS X im Applications > UtilitiesOrdner enthalten.

Alle Bild-URLs kopieren? Lynx -dumpkönnte beim Herunterladen funktionieren, aber viel Parsing - keine einfachere Methode? -1, es sei denn, der zweite Punkt wurde geklärt - es kann eine Menge Arbeit sein ...
@hhh der zweite Abschnitt, Bild-URLs abrufen, wird von der im Screenshot angezeigten Automator-Aktion ausgeführt. Für den Benutzer entsteht kein nennenswerter Aufwand.
+1 Hey, das ist cool, warum kann ich mein Downvote nicht in Upvote ändern? Ich wusste nicht, dass das so einfach ist! Danke für das Teilen :)
wget -nd -r -l1 -p -np -A jpg,jpeg,png,svg,gif -e robots=off http://www.apple.com/itunes/
  • -nd (keine Verzeichnisse) lädt alle Dateien in das aktuelle Verzeichnis herunter
  • -r -l1 (rekursive Stufe 1) lädt verlinkte Seiten und Ressourcen auf die erste Seite herunter
  • -p (Seitenerfordernisse) schließt auch Ressourcen auf verlinkten Seiten ein
  • -np (kein übergeordnetes Element) folgt keinen Links zu übergeordneten Verzeichnissen
  • -A (akzeptieren) lädt nur Dateien mit den angegebenen Erweiterungen herunter oder behält sie
  • -e robots=off ignoriert robots.txt und lädt keine robots.txt in das aktuelle Verzeichnis herunter

Wenn sich die Bilder auf einem anderen Host oder einer anderen Subdomain befinden, müssen Sie -H hinzufügen, um Hosts zu überspannen:

wget -nd -H -p -A jpg,jpeg,png,gif -e robots=off http://example.tumblr.com/page/{1..2}

Sie können auch curl verwenden:

cd ~/Desktop/; IFS=$'\n'; for u in $(curl -Ls http://example.tumblr.com/page/{1..2} | sed -En 's/.*src="([^"]+\.(jpe?g|png))".*/\1/p' | sort -u); do curl -s "$u" -O; done

-L folgt Standort-Headern (Weiterleitungen). -O gibt Dateien mit denselben Namen in das aktuelle Verzeichnis aus.

wo wird es heruntergeladen? im Arbeitsverzeichnis erscheint nur die Hauptseite ... werden die verknüpften Dateien woanders gespeichert?

Hier ist eine Hacky-Lösung (aber es funktioniert). Hoffe jemand findet einen besseren.

  1. Verwenden Sie im Terminal wget --page-requisites http://example.com/. Dadurch werden die Webseite unter example.com und alle damit verknüpften Ressourcen (z. B. Bilder, Stylesheets und Skripts) heruntergeladen. Weitere Informationen auf --page-requisites. Hinweis: Sie können viele durch Leerzeichen getrennte URLs hinzufügen, um viele auf einmal herunterzuladen. Wenn viele von demselben Server stammen, sollten Sie etwas wie verwendenwget --wait=2 , um zu vermeiden, dass Dateien zu schnell heruntergeschlürft werden.

  2. Öffnen Sie den Ordner, in den Sie diese Dateien heruntergeladen haben, und verwenden Sie Spotlight, um die Bilder von den anderen Dateien zu trennen. Ich gehe davon aus, dass Sie Mountain Lion haben. Geben Sie „Bild“ in das Suchfeld ein und wählen Sie Arten > Bild.

Es hat nur den HTML-Code heruntergeladen, keines der Bilder. Es scheint dasselbe zu sein, als hätte ich in meinem Webbrowser "Speichern unter ..." ausgeführt.
Entweder verwendet die Website JavaScript, um den Inhalt zu laden, oder sie wird wgetdurch einen Benutzeragenten blockiert. Im zweiten Fall können Sie versuchen, wget -U "enter your web browser's user-agent here"so zu tun, als wären Sie ein echter Webbrowser.
@JShoe Ich habe gerade das Flag -U mit dem User Agent von Safari getestet und es funktioniert.
Ich habe Chrome verwendet und versucht, von imgur herunterzuladen. Und was ist ein User-Agent?
@JShoe Der User-Agent ist das, was ein Browser oder Client wie wget verwendet, um sich gegenüber einem Server zu identifizieren. Diese Website zeigt Ihnen den User-Agent-String, den Ihr Browser an seinen Server gesendet hat. Das habe ich mit wget -U verwendet.
Okay, ich habe den aktualisierten Befehl erfolgreich ausgeführt, aber er hat immer noch nur den HTML-Code heruntergeladen.
Sie könnten Lynx -dumpdort alle Bild-URLs oder vielleicht einen Scraper verwenden und analysieren und versuchen, eine bessere Lösung zu finden, obwohl dies nett ist - könnten Sie erklären, wie Sie GNU Coreutils in OS X erhalten haben?
@hhh Ich habe es aus dem Quellcode kompiliert, aber Sie können auch Homebrew oder MacPorts verwenden. (Ich glaube, es war früher bei OS X dabei?)

Wenn Sie das Muster in der URL kennen, könnten Sie die *ix-Lösung mit Curl verwenden: Use curl to download images from website using wildcard?

Besuchen Sie den Automator Space auf MyAppleSpace http://www.myapplespace.com/pages/view/14664/automator-script-library

Dies ist nicht unnötig, da Automator dies bereits hat.
... und Nur-Link-Antworten werden nicht empfohlen, und die akzeptierte Antwort zeigt bereits, wie es in Automator geht.