urllib没有提供正确的文件类型

2024-04-26 18:48:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用urllib python模块从外部URL获取图像。 它工作得很好,但是有一些图像给我带来了这样的问题: https://cdn.tutsplus.com/wp/uploads/2014/01/grunt-logo-400.png

我的代码如下

import urllib
img = urllib.urlretrieve("https://cdn.tutsplus.com/wp/uploads/2014/01/grunt-logo-400.png")

当我打印img时,它会显示: “/tmp”/tmpbuhfUW.png格式““

但是如果我打印img[1],输入它会得到: “文本/html”

所以文件类型不正确。你知道吗

有什么奇怪的解决办法吗?你知道吗

PS:我检查了下载图片的/tmp文件夹,发现图片是空白的。 PS2:我也尝试过urllib2.urlopen(“cdn.tutsplus.com/wp/uploads/2014/01/grunt-logo-400.png“),但它给我错误403

更新: 最后我通过以下步骤解决了这个问题:

class MyOpener(urllib.FancyURLopener):
    version = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11'

myopener = MyOpener()
i = myopener.retrieve("https://cdn.tutsplus.com/wp/uploads/2014/01/grunt-logo-400.png")

现在它将文件类型打印为“image/png”


Tags: https图像comimgpngpluscdnurllib
1条回答
网友
1楼 · 发布于 2024-04-26 18:48:01

据我所知,你没有做错什么。Urllib只是猜错了mime类型。我不知道你到底想做什么,但你可以说

filetype = img[0].split('.')[1]

检索文件类型,然后检查它是否包含在不同图像文件类型的数组中,以确定它是否是指向图像的链接。你知道吗

相关问题 更多 >