wget 对某些 .jpg 文件工作正常,但为其他文件下载 .html 文件

wget works fine for some .jpgs but downloads an .html file instead for others

我想从命令行下载网页图片。 有时这很好用,有时却不行,我不明白为什么。 这是一个示例(维基共享资源当天的图片):

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

尽管最后一个字母可能暗示 link 到 HTML 页面,请注意 # 用于表示 URI fragment,而这个

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

它将向您显示响应 headers,可能会有很多响应,但是对于确定资源类型 Content-Type 应该足够了。