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
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 (derfile
Befehl kann verwendet werden, um zu überprüfen, ob es sich bei einer Datei um ein Image handelt).(Die
-A/-R
Optionen 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.)quelle
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:
grep -o
), um die Links zu analysieren.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.
quelle
Sie können ein Git-Repo wie dieses verwenden:
https://github.com/nixterrimus/tumbld
Es gibt auch andere Repos, die ähnliche Funktionen bieten.
quelle