Як завантажити всі посилання на .zip-файли на певній веб-сторінці за допомогою wget / curl?


83

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

Відповіді:


125

Команда:

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 негайно зупиняється.
Гайковий ключ

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


так дякую! Я не пам’ятав, звідки це взялося, нехай це просто лежить у моїх сценаріях.
K.-Michael Aye

не знаю шкода. поставити нове запитання! ;)
K.-Michael Aye

1
+1 для -Hперемикача. Це те, що заважало першій відповіді (саме це я спробував, перш ніж дивитись на SO), працювати.
Алекс

Я отримую помилку "Обов’язкові аргументи довгих опцій є обов’язковими для коротких варіантів" із цим. :(
Франсуа Леблан,

6

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

curl [url] | grep -i [filending] | sed -n 's/.*href="\([^"]*\).*/\1/p' |  parallel -N5 wget -
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.