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.