Как скачать каталог HTTP со всеми файлами и подкаталогами, как они появляются в онлайн-списке файлов / папок?


189

Есть онлайн-каталог HTTP, к которому у меня есть доступ. Я попытался загрузить все подкаталоги и файлы через wget. Но проблема в том, что при wgetзагрузке подкаталогов он загружает index.htmlфайл, который содержит список файлов в этом каталоге, без загрузки самих файлов.

Есть ли способ загрузить подкаталоги и файлы без ограничения глубины (как будто каталог, который я хочу скачать, является просто папкой, которую я хочу скопировать на мой компьютер).

онлайн-каталог HTTP

Ответы:


357

Решение:

wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/ddd/

Объяснение:

  • Он загрузит все файлы и подпапки в каталог DDD
  • -r : рекурсивно
  • -np: не собирается в верхние каталоги, как ccc /…
  • -nH : не сохранять файлы в папку с именем хоста
  • --cut-dirs=3: но сохраняя его в ddd , пропустив первые 3 папки aaa , bbb , ccc
  • -R index.html: исключая файлы index.html

Ссылка: http://bmwieczorek.wordpress.com/2008/10/01/wget-recursively-download-all-files-from- sure-directory-listed-by-apache/


17
Спасибо! Кроме того, FYI в соответствии с этим вы можете использовать -Rкак, -R cssчтобы исключить все файлы CSS, или использовать, -Aкак, -A pdfчтобы только загрузить файлы PDF.
Джон

7
Спасибо! Дополнительные советы взяты со страницы When downloading from Internet servers, consider using the ‘-w’ option to introduce a delay between accesses to the server. The download will take a while longer, but the server administrator will not be alarmed by your rudeness.
руководства

3
Я получаю эту ошибку «wget» не распознается как внутренняя или внешняя команда, работающая программа или командный файл.
Хэмиш

1
@ Хэмиш, вам может понадобиться сначала установить wget или wget отсутствует в вашем $ PATH.
Минцзян Ши

16
Отличный ответ, но учтите, что если в robots.txtкаталоге есть файл, запрещающий загрузку файлов, это не сработает. В этом случае вам нужно добавить -e robots=off . См. Unix.stackexchange.com/a/252564/10312
Даниэль Гершович,

45

Я смог заставить это работать благодаря этому посту, использующему VisualWGet . Это отлично сработало для меня. Важной частью является проверка -recursiveфлага (см. Изображение).

Также установлено, что -no-parentфлаг важен, иначе он попытается загрузить все.

введите описание изображения здесь введите описание изображения здесь


2
Только что нашел - декабрь 2017. Работает отлично. Я получил его на sourceforge.net/projects/visualwget
SDsolar

2
Хорошо работал на Windows-машине, не забудьте проверить опции, упомянутые в ответе, иначе это не сработает
csharpcoder

Не работает с определенным https. @DaveLucre, если вы попробуете использовать wget в cmd-решении, вы также сможете скачать его, но некоторые серверы не позволяют этого, я думаю,
Яннис

что проверено --no-parentделать?
Т.Тодуа

1
Работаем в марте 2020 года!
г-н программист

7
wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/ddd/

Из man wget

'-r' '--recursive' Включить рекурсивное извлечение. См. Рекурсивная загрузка, для более подробной информации. Максимальная глубина по умолчанию - 5.

'-np' '--no-parent' Никогда не подниматься в родительский каталог при рекурсивном извлечении. Это полезный параметр, поскольку он гарантирует, что будут загружены только файлы ниже определенной иерархии. См. Ограничения на основе каталога, для получения более подробной информации.

'-nH' '--no-host-directoryies' Отключить создание каталогов с префиксом хоста. По умолчанию вызов Wget с помощью '-r http://fly.srk.fer.hr/ ' создаст структуру каталогов, начинающуюся с fly.srk.fer.hr/. Эта опция отключает такое поведение.

'--cut-dirs = number' Игнорировать номера компонентов каталога. Это полезно для получения детального контроля над каталогом, в котором будет сохранен рекурсивный поиск.

Взять, к примеру, каталог по адресу « ftp://ftp.xemacs.org/pub/xemacs/ ». Если вы получите его с помощью '-r', он будет сохранен локально в ftp.xemacs.org/pub/xemacs/. Хотя опция '-nH' может удалить часть ftp.xemacs.org/, вы все еще застряли с pub / xemacs. Вот где «--cut-dirs» пригодится; это заставляет Wget не «видеть» количество удаленных компонентов каталога. Вот несколько примеров того, как работает опция --cut-dirs.

Без параметров -> ftp.xemacs.org/pub/xemacs/ -nH -> pub / xemacs / -nH --cut-dirs = 1 -> xemacs / -nH --cut-dirs = 2 ->.

--cut-dirs = 1 -> ftp.xemacs.org/xemacs/ ... Если вы просто хотите избавиться от структуры каталогов, эта опция аналогична комбинации '-nd' и '-P'. Однако, в отличие от '-nd', --cut-dirs 'не проигрывает с подкаталогами - например, с' -nH --cut-dirs = 1 ', подкаталог beta / / будет помещен в xemacs / beta, так как можно было бы ожидать.


3
Некоторые объяснения были бы великолепны.
Бенуа Латиниер

Как насчет загрузки файлов определенного типа с помощью VisualWget ? Можно ли загружать только файлы mp3 в каталоге и его подкаталогах в VisualWget ?
Джейсон

3

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

Есть несколько расширений браузера, которые могут сделать это, но большинство требуют установки менеджеров загрузки, которые не всегда бесплатны, имеют тенденцию быть раздражением и использовать много ресурсов. Вот тот, который не имеет ни одного из этих недостатков:

«Download Master» - это расширение для Google Chrome, которое отлично подходит для загрузки из каталогов. Вы можете выбрать, какие типы файлов загружать, или загрузить весь каталог.

https://chrome.google.com/webstore/detail/download-master/dljdacfojgikogldjffnkdcielnklkce

Чтобы получить актуальный список функций и другую информацию, посетите страницу проекта в блоге разработчика:

http://monadownloadmaster.blogspot.com/


3

вы можете использовать lftp, швейцарский армейский нож для скачивания, если у вас есть большие файлы, которые вы можете добавить --use-pget-n=10в команду

lftp -c 'mirror --parallel=100 https://example.com/files/ ;exit'

работал отлично и очень быстро, это увеличило мою интернет-линию, загружая тысячи маленьких файлов. Очень хорошо.
n13

работает отлично !! лучший вариант!
ambigus9


2

Нет программного обеспечения или плагина требуется!

(можно использовать, только если вам не нужен рекурсивный режим)

Используйте букмарклет. Перетащите эту ссылку в закладки, затем отредактируйте и вставьте этот код:

(function(){ var arr=[], l=document.links; var ext=prompt("select extension for download (all links containing that, will be downloaded.", ".mp3"); for(var i=0; i<l.length; i++) { if(l[i].href.indexOf(ext) !== false){ l[i].setAttribute("download",l[i].text); l[i].click(); } } })();

и перейдите на страницу (откуда вы хотите скачать файлы), и нажмите эту закладку.


-1

Обычно wget работает таким образом, но у некоторых сайтов могут быть проблемы, и он может создавать слишком много ненужных HTML-файлов. Чтобы упростить эту работу и предотвратить ненужное создание файлов, я делюсь своим сценарием getwebfolder, который является первым сценарием linux, который я написал для себя. Этот скрипт загружает все содержимое веб-папки, введенной в качестве параметра.

Когда вы пытаетесь загрузить открытую веб-папку с помощью wget, которая содержит более одного файла, wget загружает файл с именем index.html. Этот файл содержит список файлов веб-папки. Мой скрипт преобразует имена файлов, записанные в файле index.html, в веб-адреса и загружает их явно с помощью wget.

Протестировано в Ubuntu 18.04 и Kali Linux. Может работать и в других дистрибутивах.

Использование :

  • извлечь файл getwebfolder из zip-файла, представленного ниже

  • chmod +x getwebfolder (только в первый раз)

  • ./getwebfolder webfolder_URL

Такие как ./getwebfolder http://example.com/example_folder/

Ссылка на скачивание

Подробности в блоге

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.