32

Я пытаюсь загрузить полный каталог веб-сайтов, используя CURL. Следующая команда не работает:

curl -LO http://example.com/

Возвращает ошибку: curl: Remote file name has no length! ,

Но когда я делаю это: curl -LO http://example.com/someFile.type это работает. Есть идеи, как скачать все файлы в указанном каталоге? Благодарю.

6 ответов6

30

HTTP на самом деле не имеет понятия о каталогах. Косые черты, кроме первых трех (http://example.com/), не имеют какого-либо особого значения, кроме .. в относительных URL. Поэтому, если сервер не следует определенному формату, нет способа «загрузить все файлы в указанном каталоге».

Если вы хотите загрузить весь сайт, лучше всего рекурсивно просматривать все ссылки на главной странице. Керл не может этого сделать, но wget может. Это будет работать, если веб-сайт не слишком динамичен (в частности, wget не будет видеть ссылки, созданные с помощью кода Javascript). Начните с wget -r http://example.com/ и просмотрите разделы «Параметры рекурсивного извлечения» и «Параметры рекурсивного принятия / отклонения» в руководстве по wget, чтобы найти более подходящие параметры (глубина рекурсии, списки исключений и т.д.).

Если веб-сайт пытается заблокировать автоматические загрузки, вам может потребоваться изменить строку пользовательского агента (-U Mozilla) и игнорировать robots.txt (создайте пустой файл example.com/robots.txt и используйте параметр -nc чтобы wget не пытается загрузить его с сервера).

22

Всегда работает для меня, не содержит родительских и рекурсивных, чтобы получить только нужный каталог.

 wget --no-parent -r http://WEBSITE.com/DIRECTORY
12

В этом случае curl НЕ лучший инструмент. Вы можете использовать wget с аргументом -r , например так:

wget -r http://example.com/ 

Это самая основная форма, и вы также можете использовать дополнительные аргументы. Для получения дополнительной информации см. manpage (man wget).

5

Это невозможно Не существует стандартного, общепринятого, способа для веб-сервера вернуть вам содержимое каталога. Большинство серверов генерируют HTML-индекс каталога, если он настроен для этого, но этот вывод не является стандартным и не гарантируется никакими средствами. Вы можете проанализировать этот HTML, но имейте в виду, что формат будет меняться от сервера к серверу и не всегда будет включен.

2

Вы можете использовать расширение Firefox DownThemAll! Это позволит вам скачать все файлы в каталоге в один клик. Это также настраивается, и вы можете указать, какие типы файлов для загрузки. Это самый простой способ, который я нашел.

0

Вы можете найти использование для риппера веб-сайта здесь, он загрузит все и изменит содержание / внутренние ссылки для локального использования. Хороший можно найти здесь: http://www.httrack.com

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .