Отримання всіх файлів з веб-сторінки за допомогою curl


86

Я хотів би завантажити файли відразу з наступної сторінки за допомогою curl: http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/

Я спробував, curl http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/і він повернув купу рядків у терміналі, але жодних файлів не отримав.

Відповіді:


124

Використовуйте wgetзамість цього. Ви можете встановити його, brew install wgetякщо ви встановили Homebrew або sudo port install wgetякщо ви встановили MacPorts.

Для завантаження файлів із списку каталогів використовуйте -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 (дзеркало): -r --timestamping --level inf --no-remove-listing
  • -nc, --no-clobber: Пропустити завантаження, якщо файли існують

3
wget -r -np -k http://your.website.com/specific/directory. Хитрість полягає у використанні -kдля перетворення посилань (зображень тощо) для локального перегляду.
yPhil

brewі portне працює для мене, щоб встановити wget. Що я повинен зробити?
Хосейн Гейдарі

@HoseynHeydari: ви можете використовувати rudix.org для складених бінарних файлів для OSX. тому вам потрібно встановити rudix, а потім використовувати: sudo rudix встановити wget
Mamonu

Варіант -kне завжди працює. Наприклад, якщо у вас на веб-сторінці є два посилання, що вказують на один і той же файл, ви намагаєтеся рекурсивно фіксувати, wgetздається, що конвертувати посилання першого екземпляра, але не другого.
Кун

22

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(як це запропоновано в іншій відповіді вже) - кращий варіант.


Дякую. Це приємне рішення і чудовий приклад роботи!
egelev

1
xmllint --html --xpath '//a/@href'Ймовірно , це краще , ніж синтаксичний аналізатор grep.
припинення

7

Посилання: http://blog.incognitech.in/download-files-from-apache-server-listing-directory/

Ви можете використовувати таку команду:

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: максимальна глибина рекурсії (інф або 0 для нескінченності)
    • --no-remove-listing: не видаляйте файли ".listing"
  • --convert-links: зробити посилання у завантаженому HTML або CSS вказувати на локальні файли
  • --no-parent: не піднімайтеся до батьківського каталогу
  • --wait=5: зачекайте 5 секунд між завантаженнями. Так що ми не збиваємо сервер.
  • <website-url>: Це URL-адреса веб-сайту, звідки можна завантажити файли.

Щаслива завантаження: smiley:


3

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


щось нове для мене, дякую. найкраще це швидко і швидко: один -лінійний. просто наріжте жир і уникайте всякого сміття.
Петро Тео

0

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.