我使用urllib python模块从外部URL获取图像。它工作得很好,但有一些图像给我这样的问题:https://cdn.tutsplus.com/wp/uploads/2014/01/grunt -商标- 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]。输入它给我:"text/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"
据我所知,你没有做错任何事。Urllib只是猜测mime类型不正确。我不知道你到底想做什么,但你可以说
filetype = img[0].split('.')[1]
来检索文件类型,然后检查它是否包含在不同图像文件类型的数组中,以确定它是否是指向图像的链接。