пытаюсь использовать Curl для загрузки серии файлов

StackOverflow https://stackoverflow.com/questions/1164098

  •  18-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь использовать Curl для загрузки серии файлов в следующем формате:

http://example.com/001.jpg

..

http://example.com/999.jpg

Поэтому я использовал эту команду:

Время завиток "http://example.com/[0-9][0-9][0-9].jpg"-o"#1#2#3.gif "

Но некоторые файлы не существуют, и эта команда создаст файлы на моей стороне, но на самом деле она будет содержать только страницу с ошибкой.

Мне нужен способ, с помощью которого Curl может проверить, существует ли он на удаленном сервере, прежде чем загружать его.

Я знаю, что wget может это сделать, но запуск wget, похоже, занимает примерно в 5 раз больше времени.Команда, которую я использовал, чтобы попробовать это в wget, такова:

время http://example.com/{0..9}{0..9}{0..9}.jpg

Это было полезно?

Решение

Попробуйте опцию -f/--fail:

(HTTP) Сбой автоматически (без вывода вообще) при ошибках сервера.В основном это делается для того, чтобы лучше активировать сценарии и т. д., чтобы лучше справляться с неудачными попытками.В обычных случаях, когда HTTP-серверу не удается доставить документ, он возвращает HTML-документ, в котором указано это (который часто также описывает причину и многое другое).Этот флаг не позволит Curl выводить это и возвращать ошибку 22.

Этот метод не является отказоустойчивым, и бывают случаи, когда неуспешные коды ответа могут проскользнуть, особенно когда используется аутентификация (коды ответа 401 и 407).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top