Wie verwende ich Wget, um alle Bilder von einer URL in einen einzigen Ordner herunterzuladen?

133

Ich verwende wget, um alle Bilder von einer Website herunterzuladen, und es funktioniert einwandfrei, speichert jedoch die ursprüngliche Hierarchie der Website mit allen Unterordnern, sodass die Bilder verteilt sind. Gibt es eine Möglichkeit, alle Bilder in einen einzigen Ordner herunterzuladen? Die Syntax, die ich momentan verwende, lautet:

wget -r -A jpeg,jpg,bmp,gif,png http://www.somedomain.com
geoffs3310
quelle

Antworten:

194

Versuche dies:

wget -nd -r -P /save/location -A jpeg,jpg,bmp,gif,png http://www.somedomain.com

Hier einige weitere Informationen:

-ndverhindert die Erstellung einer Verzeichnishierarchie (dh keine Verzeichnisse ).

-rermöglicht das rekursive Abrufen. Weitere Informationen finden Sie unter Rekursiver Download .

-P Legt das Verzeichnispräfix fest, in dem alle Dateien und Verzeichnisse gespeichert werden.

-ALegt eine Whitelist fest, um nur bestimmte Dateitypen abzurufen. Zeichenfolgen und Muster werden akzeptiert und beide können in einer durch Kommas getrennten Liste verwendet werden (siehe oben). Weitere Informationen finden Sie unter Dateitypen .

Jon
quelle
5
Das hat bei mir eigentlich nicht funktioniert. Mein Speicherort war "." und es kopierte die gesamte Site-Hierarchie dort.
Buttle Butkus
2
@ButtleButkus Es hört sich so an, als müssten Sie mit der -AOption accept ein bisschen mehr herumspielen. Weitere Informationen finden Sie in der Wget-Dokumentation zu Dateitypen . Wenn Sie in das aktuelle Verzeichnis herunterladen, können Sie auch die Verzeichnispräfixoption entfernen -P. Wenn Sie einen einzelnen Dateityp herunterladen, z. B. nur JPGs, verwenden Sie so etwas wie wget -r -A.jpg http://www.domain.com. Schauen Sie sich die erweiterten Beispiele an , die in der Wget-Dokumentation enthalten sind.
Jon
Wenn Sie -nd das oben Gesagte hinzufügen , funktioniert es. Sie können auch mehrere -A-Flags wie-A "*foo*" -A "*bar*"
Yablargo
1
Vergessen Sie nicht, den Job zu verwenden --level=infoder --level=9999999999weil er wgetaufgrund der standardmäßigen maximalen Rekursionstiefe von wahrscheinlich den Job sabotiert 5.
user619271
127
wget -nd -r -l 2 -A jpg,jpeg,png,gif http://t.co
  • -nd: keine Verzeichnisse (alle Dateien im aktuellen Verzeichnis speichern; -P directorydas Zielverzeichnis ändert)
  • -r -l 2: rekursive Ebene 2
  • -A: akzeptierte Erweiterungen
wget -nd -H -p -A jpg,jpeg,png,gif -e robots=off example.tumblr.com/page/{1..2}
  • -H: span hosts (wget lädt standardmäßig keine Dateien von verschiedenen Domänen oder Subdomänen herunter)
  • -p: Seitenanforderungen (enthält Ressourcen wie Bilder auf jeder Seite)
  • -e robots=off: Befehl ausführen, robotos=offals ob er Teil der .wgetrcDatei wäre. Dadurch wird der Roboterausschluss deaktiviert. Dies bedeutet, dass Sie robots.txt und die Roboter-Meta-Tags ignorieren (Sie sollten wissen, welche Auswirkungen dies hat, seien Sie vorsichtig).

Beispiel: Holen Sie sich alle .jpgDateien aus einem beispielhaften Verzeichnis:

$ wget -nd -r -l 1 -A jpg http://example.com/listing/
Lri
quelle
9

Probier diese:

wget -nd -r -P /save/location/ -A jpeg,jpg,bmp,gif,png http://www.domain.com

und warten Sie, bis alle zusätzlichen Informationen gelöscht sind

Orezvani
quelle
Es funktioniert nicht bei mir. wget -nd -r -P /Users/duraiamuthan/Downloads/images/ -A jpeg,jpg,bmp,gif,png http://www.forbes.com/profile/mark-zuckerberg/
Vivo
5

Laut Manpage lautet das -P-Flag:

-P Präfix --directory-prefix = Präfix Setzen Sie das Verzeichnispräfix auf Präfix. Das Verzeichnispräfix ist das Verzeichnis, in dem alle anderen Dateien und Unterverzeichnisse gespeichert werden, dh oben im Abrufbaum. Der Standardwert ist. (das aktuelle Verzeichnis).

Dies bedeutet, dass nur das Ziel angegeben wird, aber wo der Verzeichnisbaum gespeichert werden soll. Der Baum wird nicht in nur ein Verzeichnis reduziert . Wie bereits erwähnt, macht das Flag -nd das tatsächlich.

@ Jon in Zukunft wäre es vorteilhaft zu beschreiben, was die Flagge tut, damit wir verstehen, wie etwas funktioniert.

Michael Yagudaev
quelle
2

Die vorgeschlagenen Lösungen eignen sich perfekt zum Herunterladen der Bilder und wenn es ausreicht, alle Dateien in dem von Ihnen verwendeten Verzeichnis zu speichern. Wenn Sie jedoch alle Bilder in einem bestimmten Verzeichnis speichern möchten, ohne den gesamten hierarchischen Baum der Site zu reproduzieren, versuchen Sie, der von Jon vorgeschlagenen Zeile "Schnittverzeichnisse" hinzuzufügen.

wget -r -P /save/location -A jpeg,jpg,bmp,gif,png http://www.boia.de --cut-dirs=1 --cut-dirs=2 --cut-dirs=3

In diesem Fall verhindert Cut-Dirs, dass wget Unterverzeichnisse bis zur 3. Tiefenebene im hierarchischen Baum der Website erstellt und alle Dateien in dem von Ihnen angegebenen Verzeichnis speichert. Sie können weitere 'Cut-Dirs' mit höheren Nummern hinzufügen, wenn Sie dies möchten beschäftigen sich mit Websites mit einer tiefen Struktur.

Hugi Coapete
quelle
-7

Das Dienstprogramm wget ruft Dateien aus dem World Wide Web (WWW) mit weit verbreiteten Protokollen wie HTTP, HTTPS und FTP ab. Das Wget-Dienstprogramm ist ein frei verfügbares Paket und die Lizenz steht unter der GNU GPL-Lizenz. Dieses Dienstprogramm kann jedes Unix-ähnliche Betriebssystem einschließlich Windows und MAC OS installieren. Es ist ein nicht interaktives Befehlszeilentool. Hauptmerkmal von Wget ist seine Robustheit. Es ist so konzipiert, dass es in langsamen oder instabilen Netzwerkverbindungen funktioniert. Wget startet den Download automatisch dort, wo er bei einem Netzwerkproblem unterbrochen wurde. Lädt die Datei auch rekursiv herunter. Es wird so lange versucht, bis die Datei vollständig abgerufen wurde.

Installieren Sie wget auf dem Linux-Computer sudo apt-get install wget

Erstellen Sie einen Ordner, in den Sie Dateien herunterladen möchten. sudo mkdir myimages cd myimages

Klicken Sie mit der rechten Maustaste auf die Webseite. Wenn Sie beispielsweise den Bildspeicherort möchten, klicken Sie mit der rechten Maustaste auf das Bild und kopieren Sie den Bildspeicherort. Wenn mehrere Bilder vorhanden sind, gehen Sie wie folgt vor:

Wenn 20 Bilder gleichzeitig aus dem Internet heruntergeladen werden können, beginnt der Bereich zwischen 0 und 19.

wget http://joindiaspora.com/img {0..19} .jpg

Trupti Kini
quelle
2
Ihre Antwort erklärt, was wget ist und wie man es verwendet, um fortlaufend nummerierte Bilder herunterzuladen ... beide beziehen sich nicht auf die ursprüngliche Frage.
Alastair