Jak pobrać wszystkie linki do plików .zip na danej stronie przy użyciu wget / curl?

83

Strona zawiera łącza do zestawu plików ZIP, z których wszystkie chcę pobrać. Wiem, że można to zrobić za pomocą wget i curl. Jak to jest zrobione?

uyetch
źródło

Odpowiedzi:

126

Polecenie to:

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

Znaczenie opcji:

-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.
twórczy
źródło
16
Flaga -nd(brak katalogów) jest przydatna, jeśli nie chcesz tworzyć żadnych dodatkowych katalogów (tzn. Wszystkie pliki będą w folderze głównym).
Steve Davis
1
Jak dostosować to rozwiązanie, aby wchodziło głębiej z danej strony? Próbowałem -l 20, ale wget natychmiast się zatrzymał.
Klucz
2
Jeśli pliki nie znajdują się w tym samym katalogu, co początkowy adres URL, być może trzeba będzie się ich pozbyć -np. Jeśli są na innym hoście, będziesz potrzebować --span-host.
Dan
84

Powyższe rozwiązanie u mnie nie działa. U mnie działa tylko ten:

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

Znaczenie opcji:

-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
K.-Michael Aye
źródło
2
Źródło: commandlinefu.com/commands/view/12498/…
James Jeffery
Tak, dziękuję! Nie pamiętałem, skąd się wziął, po prostu leżało w moich skryptach.
K.-Michael Aye
nie wiem przepraszam. zadaj nowe pytanie! ;)
K.-Michael Aye
1
+1 za -Hzmianę. To właśnie uniemożliwiało działanie pierwszej odpowiedzi (której próbowałem przed spojrzeniem na SO).
Alex
Otrzymuję błąd „Obowiązkowe argumenty dla długich opcji są również obowiązkowe dla krótkich opcji” przy tym. :(
François Leblanc
6

W przypadku innych scenariuszy z równoległą magią, której używam:

curl [url] | grep -i [filending] | sed -n 's/.*href="\([^"]*\).*/\1/p' |  parallel -N5 wget -
M Lindblad
źródło