Получение файлов, все сразу, с веб-страницы с помощью curl

Я хотел бы загрузить файлы, все сразу, со следующей страницы с помощью curl: http://www.ime.usp.br/~coelho/mac0122-2013/ep2 /esqueleto /

Я попробовал curl http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/, и он вернул кучу строк в терминале, но сделал " nt получить любые файлы.

64 голоса | спросил Thi G. 31 PM00000050000004031 2013, 17:20:40

5 ответов


99

Используйте wget. Вы можете установить его с помощью brew install wget или sudo port install wget.

Для загрузки файлов из списка каталогов используйте -r (рекурсивный), -np (не следуйте ссылкам на родительские каталоги) и -k, чтобы ссылки в загруженном HTML или CSS указывали на локальные файлы (credit @xaccrocheur).

wget -r -np -k http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/

Другие полезные опции:

  • -nd (без каталогов): загрузка всех файлов в текущий каталог
  • -e robots.off: игнорировать файлы robots.txt, не загружать файлы robots.txt
  • -A png,jpg: принимать только файлы с расширениями png или jpg
  • -m (mirror): -r --timestamping --level inf --no-remove-listing
  • -nc, --no-clobber: Пропустить загрузку, если существуют файлы
ответил user495470 31 PM00000050000003931 2013, 17:56:39
16

curl может читать только файлы с одним веб-страницей, куча строк, которые вы получили, на самом деле является индексом каталога (который вы также видите в своем браузере, если вы перейдете на этот URL-адрес). Чтобы использовать curl и некоторые магии инструментов Unix для получения файлов, вы могли бы использовать что-то вроде

for file in $(curl -s http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/ |
                  grep href |
                  sed 's/.*href="//' |
                  sed 's/".*//' |
                  grep '^[a-zA-Z].*'); do
    curl -s -O http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/$file
done

, который получит все файлы в текущий каталог.

Для более сложных потребностей (включая получение кучи файлов с сайта с папками /каталогами) лучший вариант wget (как предлагается в другом ответе).

ответил nohillside 31 PM00000060000005831 2013, 18:09:58
3

Ссылка: http://blog.incognitech.in /скачать-файлы-с-Apache-сервер листинг-каталога /

Вы можете использовать следующую команду:

wget --execute="robots = off" --mirror --convert-links --no-parent --wait=5 <website-url>

Объяснение с каждым параметром

  • wget: простая команда, чтобы сделать запрос CURL и загрузить удаленные файлы на нашу локальную машину.
  • --execute="robots = off": это будет игнорировать файл robots.txt во время сканирования по страницам. Это полезно, если вы не получаете все файлы.
  • --mirror: эта опция будет в основном отражать структуру каталогов для данного URL. Это ярлык для -N -r -l inf --no-remove-listing, что означает:
    • -N: не восстанавливать файлы, если они не являются более новыми, чем локальные
    • -r: указать рекурсивную загрузку
    • -l inf: максимальная глубина рекурсии (inf или 0 для бесконечного)
    • --no-remove-listing: не удалять файлы .listing
  • --convert-links: сделать ссылки в загруженном HTML или CSS в локальные файлы
  • --no-parent: не подниматься в родительский каталог
  • --wait=5: подождите 5 секунд между попытками поиска. Чтобы мы не трэш сервера.
  • <website-url>: это URL-адрес веб-сайта, где можно загрузить файлы.

Счастливая загрузка: смайлик:

ответил Udit Desai 19 J0000006Europe/Moscow 2016, 07:22:43
2

Вы можете использовать httrack для Windows /MacOS и установить через Homebrew.

ответил user242053 18 J0000006Europe/Moscow 2017, 16:08:34
1

Для тех из нас, кто предпочитает использовать приложение с графическим интерфейсом, существует недорогая условно-бесплатная программа DeepVacuum для Mac OS X , который реализует wget в удобной для пользователя форме, со списком пресетов, которые могут обрабатывать часто требуемые задачи. Вы также можете сохранить свои собственные настройки в качестве пресетов.

введите описание изображения здесь>> </p></body></html>

ответил 15 FebruaryEurope/MoscowbSat, 15 Feb 2014 20:05:42 +0400000000pmSat, 15 Feb 2014 20:05:42 +040014 2014, 20:05:42

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132