Wie lade ich mit wget / curl alle Links zu ZIP-Dateien auf einer bestimmten Webseite herunter?


83

Eine Seite enthält Links zu einer Reihe von ZIP-Dateien, die ich alle herunterladen möchte. Ich weiß, dass dies durch Wget und Curl geschehen kann. Wie wird es gemacht?

Antworten:


125

Der Befehl lautet:

wget -r -np -l 1 -A zip http://example.com/download/

Optionen Bedeutung:

-r,  --recursive          specify recursive download.
-np, --no-parent          don't ascend to the parent directory.
-l,  --level=NUMBER       maximum recursion depth (inf or 0 for infinite).
-A,  --accept=LIST        comma-separated list of accepted extensions.

16
Das -ndFlag (keine Verzeichnisse) ist praktisch, wenn keine zusätzlichen Verzeichnisse erstellt werden sollen (dh alle Dateien befinden sich im Stammordner).
Steve Davis

1
Wie kann ich diese Lösung optimieren, damit sie von der angegebenen Seite aus tiefer geht? Ich habe versucht -l 20, aber wget hört sofort auf.
Schraubenschlüssel

2
Wenn sich die Dateien nicht im selben Verzeichnis wie die Start-URL befinden, müssen Sie sie möglicherweise entfernen -np. Wenn sie sich auf einem anderen Host befinden, benötigen Sie --span-host.
Dan

84

Die obige Lösung funktioniert bei mir nicht. Bei mir funktioniert nur dieser:

wget -r -l1 -H -t1 -nd -N -np -A.mp3 -erobots=off [url of website]

Optionen Bedeutung:

-r            recursive
-l1           maximum recursion depth (1=use only this directory)
-H            span hosts (visit other hosts in the recursion)
-t1           Number of retries
-nd           Don't make new directories, put downloaded files in this one
-N            turn on timestamping
-A.mp3        download only mp3s
-erobots=off  execute "robots.off" as if it were a part of .wgetrc


ja dank! Ich erinnerte mich nicht, woher es kam, habe es nur in meinen Skripten liegen.
K.-Michael Aye

Ich weiß es nicht, sorry. eine neue Frage stellen! ;)
K.-Michael Aye

1
+1 für den -HSchalter. Dies hat verhindert, dass die erste Antwort (die ich vor dem Betrachten von SO ausprobiert habe) funktioniert.
Alex

Ich erhalte den Fehler "Obligatorische Argumente für lange Optionen sind auch für kurze Optionen obligatorisch". :(
François Leblanc

6

Für andere Szenarien mit paralleler Magie verwende ich:

curl [url] | grep -i [filending] | sed -n 's/.*href="\([^"]*\).*/\1/p' |  parallel -N5 wget -
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.