Я хочу загружать веб-изображения из командной строки. Иногда это работает нормально, иногда нет, и я не могу понять, почему. Вот пример (изображение дня с Викисклада):
wget https://commons.wikimedia.org/wiki/Main_Page#/media/File:01_Calanche_Piana.jpg
Это каким-то образом дает мне .html
HTTP request sent, awaiting response... 200 OK
Length: 185986 (182K) [text/html]
Saving to: 'Main_Page'
Однако следующее (это то же изображение, но с явно выбранным разрешением) дает мне .jpg (это то, что я хочу)
wget https://upload.wikimedia.org/wikipedia/commons/thumb/0/01/01_Calanche_Piana.jpg/640px-01_Calanche_Piana.jpg
...
HTTP request sent, awaiting response... 200 OK
Length: 118796 (116K) [image/jpeg]
Saving to: '640px-01_Calanche_Piana.jpg'
Я попытался добавить -O test.jpg
к первому примеру, хотя это все равно будет файл .html.
Кто-нибудь знает, почему в одном случае команда работает, а в другом нет?
why the command works in one case but not in the other?
Этот
https://commons.wikimedia.org/wiki/Main_Page#/media/File:01_Calanche_Piana.jpg
несмотря на то, что последняя буква может указывать на ссылку на HTML-страницу, обратите внимание, что есть #
, который используется для обозначения Фрагмент URI, а этот
https://upload.wikimedia.org/wikipedia/commons/thumb/0/01/01_Calanche_Piana.jpg/640px-01_Calanche_Piana.jpg
URL-адрес фактического изображения. Если вам интересно, какой тип файла находится по указанному URL-адресу, но вы не хотите загружать этот файл, вы можете сделать
wget -S --spider https://www.example.com
Он покажет вам заголовки ответов, их может быть много, но для определения типа ресурса должно хватить Content-Type
.