Wie lade ich alle Bilder von einer Website (nicht von einer Webseite) mit dem Terminal herunter?

3

Ich möchte einen Befehl, mit dem ich eine URL eingebe, zum Beispiel photos.tumblr.com, und der alle Fotos auf dieser Site in einem Ordner herunterlädt, aber nicht nur Bilder von der Homepage der Site. Bei diesem Befehl müssen die Bilder von allen Teilen der Website heruntergeladen werden, z. B. von photos.tumblr.com/ph1/1.png/photos.tumblr.com/ph3/4.jpg.

Bitte zeigen Sie mir ein Beispiel mit dieser URL: http://neverending-fairytale.tumblr.com/ und testen Sie es, bevor Sie die Frage beantworten

Zignd
quelle

Antworten:

4

Sie können verwenden:

wget -r -A=.jpg,.png http://website.com

Mit diesem Befehl erhalten Sie alle JPG- und PNG-Dateien, können jedoch von der Site ausgeschlossen werden.

Also, wenn Sie verwenden:

wget --random-wait --limit-rate=100k -r -A=.jpg,.png http://website.com

Zwischen dem Herunterladen und dem Festlegen eines Tempolimits warten Ihre Bilder nach dem Zufallsprinzip.

Vic Abreu
quelle
1
Ihr Befehl funktioniert nicht
Zignd
Bitte
schau dir
Vielleicht wurdest du trotzdem gebannt.
Vic Abreu
tumblr ist die Art von Site, die diese Scraping-Skripte sehr wahrscheinlich verbieten würde.
Heltonbiker
1

Sie können die gesamte Website herunterladen (ich würde es verwenden wget -r -p -l inf -np) und dann (oder gleichzeitig) ein Shell-Skript ausführen, um alle Nicht-Image-Dateien zu löschen (der fileBefehl kann verwendet werden, um zu überprüfen, ob es sich bei einer Datei um ein Image handelt).

(Die -A/-ROptionen von wget sind nicht zuverlässig. Sie überprüfen nur die Erweiterung der URL (sodass Sie nach .jpg, .jpeg, .png usw. filtern können). Es ist jedoch nicht erforderlich, dass diese vorhanden sind.)

Ankur
quelle
1

Sie könnten kaum gute Ergebnisse erzielen, wenn Sie den Brute-Force-Ansatz verwenden, den die meisten einzeiligen Befehle geben würden (obwohl ich die wget-Option verwende, um die gesamte Site häufig abzurufen).

Ich würde Ihnen vorschlagen, ein Skript zu erstellen, das eine Art bedingter Auswahl und Schleifen verwendet, um tatsächlich die Art von Links zuzuordnen und zu befolgen, die Sie zu den gewünschten Bildern führen.

Die Strategie, die ich normalerweise verfolge:

  • Rufen Sie im Browser die erste interessierende Seite auf und zeigen Sie den Quellcode an.
  • Klicken Sie mit der rechten Maustaste auf ein Bild -> "Bildeigenschaften" -> suchen Sie die Attribute "src =" und die Bild-Tags.
  • Rufen Sie das Gesamtmuster dieser Tags / Links / Hrefs ab und verwenden Sie regex ( grep -o), um die Links zu analysieren.
  • Verwenden Sie diese Links mit einem Befehl, um die Bilder herunterzuladen.
  • Holen Sie sich auch die Links auf der Seite, die zu anderen Seiten führen.
  • Wiederholen.

Dies ist in der Tat viel komplizierter als ein Einzeiler, der alles aushält, aber die Erfahrung ist aufschlussreich. Webscraping ist eine Kunst für sich.

Auch dafür würde ich Python empfehlen, obwohl es durchaus möglich ist, dies mit Shell Script (bash) oder einer anderen Skriptsprache (Ruby, PHP, Perl usw.) zu tun.

Hoffe das hilft.

Heltonbiker
quelle
0

Sie können ein Git-Repo wie dieses verwenden:

https://github.com/nixterrimus/tumbld

Es gibt auch andere Repos, die ähnliche Funktionen bieten.

Mark Anderson
quelle