Я пытаюсь загрузить полный каталог веб-сайта с помощью ЗАВИХРЕНИЯ. Следующая команда не работает:
curl -LO http://example.com/
Это возвращает ошибку: curl: Remote file name has no length!
.
Но когда я делаю это: curl -LO http://example.com/someFile.type
работает. Какая-либо идея, как загрузить все файлы в указанном каталоге? Спасибо.
HTTP действительно не имеет понятия каталогов. Наклонные черты кроме первых трех (http://example.com/
) не имейте никакого особого значения кроме относительно ..
в относительных URL. Таким образом, если сервер не следует за конкретным форматом, нет никакого способа “загрузить все файлы в указанном каталоге”.
Если Вы хотите загрузить целый сайт, Ваш лучший выбор состоит в том, чтобы пересечь все ссылки на основной странице рекурсивно. Завихрение не может сделать, оно, но wget может. Это будет работать, если веб-сайт не будет слишком динамичным (в частности, то wget не будет видеть ссылки, которые создаются кодом JavaScript). Запустите с wget -r http://example.com/
, и посмотрите под “Рекурсивными Опциями Извлечения”, и “Рекурсивный Принимают/Отклоняют Опции” в wget руководстве для более соответствующих опций (глубина рекурсии, списки исключения, и т.д.).
Если веб-сайт пытается заблокировать автоматизированные загрузки, Вы, возможно, должны изменить строку агента пользователя (-U Mozilla
), и проигнорировать robots.txt
(создайте пустой файл example.com/robots.txt
и используйте -nc
опция так, чтобы wget не пытался загрузить его с сервера).
Это не возможно. Нет никакого стандарта, обычно реализовываемого, путь к веб-серверу для возврата содержания каталога Вам. Большинство серверов действительно генерирует индекс HTML каталога, если настроено, чтобы сделать так, но этот вывод не является стандартным, ни гарантируемый каким-либо образом. Вы могли проанализировать этот HTML, но иметь в виду, что формат изменится с сервера на сервер и будет не всегда включаться.