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

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

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

online HTTP directory

Ответ 1

Решение:

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-termin-directory-listed-by-apache/

Ответ 2

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

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

enter image description hereenter image description here

Ответ 3

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

От man wget

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

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

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

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

Взять, к примеру, каталог по адресу ' 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 как единое целое будет ожидать.

Ответ 4

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

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

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

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

Для получения обновленного списка функций и другой информации посетите страницу проекта в блоге разработчика:

http://monadownloadmaster.blogspot.com/

Ответ 5

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

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

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

(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(); } } })();

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

Ответ 7

Обычно 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/

Ссылка для скачивания

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