2010-10-17 17:55:07 +0000 2010-10-17 17:55:07 +0000
40
40

CURL для загрузки каталога

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

curl -LO http://example.com/

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

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

Ответы (6)

40
40
40
2014-01-31 16:44:52 +0000

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

wget --no-parent -r http://WEBSITE.com/DIRECTORY
32
32
32
2010-10-17 19:59:25 +0000

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

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

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

17
17
17
2014-01-23 11:50:03 +0000

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

wget -r http://example.com/

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

5
5
5
2010-10-17 17:59:25 +0000

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

2
2
2
2013-01-20 00:08:28 +0000

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

0
0
0
2014-01-23 12:44:17 +0000

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

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

7
16
19
8
6