Как загрузить все ссылки на файлы .zip на данной веб-странице с помощью wget / curl?

83

Страница содержит ссылки на набор файлов .zip, все из которых я хочу загрузить. Я знаю, что это можно сделать с помощью wget и curl. Как это делается?

uyetch
источник

Ответы:

126

Команда такая:

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

Значение параметров:

-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
-nd(Не каталоги) флаг удобно , если вы не хотите какие - либо дополнительные каталоги создаются (т.е. всех файлы будут находиться в корневой папке).
Стив Дэвис
1
Как мне настроить это решение, чтобы оно уходило глубже с данной страницы? Я пробовал -l 20, но wget сразу останавливается.
Wrench
2
Если файлы находятся не в том же каталоге, что и начальный URL-адрес, возможно, вам придется избавиться от -np. Если они находятся на другом хосте, вам понадобится --span-host.
Дэн
84

Вышеупомянутое решение не работает для меня. У меня работает только этот:

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

Значение параметров:

-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
К.-Майкл Ай
источник
2
Источник: commandlinefu.com/commands/view/12498/…
Джеймс Джеффри,
Да, спасибо! Откуда он взялся, не помнил, просто лежал в моих скриптах.
K.-Michael Aye
не знаю извините. задайте новый вопрос! ;)
К.-Майкл Айе
1
+1 за -Hпереключатель. Это то, что мешало первому ответу (это то, что я пробовал, прежде чем смотреть на SO).
Alex
Я получаю сообщение об ошибке «Обязательные аргументы для длинных параметров являются обязательными и для коротких параметров». :(
François Leblanc
6

Для других сценариев с некоторой параллельной магией я использую:

curl [url] | grep -i [filending] | sed -n 's/.*href="\([^"]*\).*/\1/p' |  parallel -N5 wget -
М. Линдблад
источник