当我使用python urllib从url检索文件时发生Errno套接字错误

时间:2017-04-04 09:44:37

标签: python sockets url download urllib

我尝试从NASA下载.tiff文件。在浏览器中执行它时可以正常工作。使用以下python代码尝试时

import urllib
f = urllib.FancyURLopener()
url = "https://neo.sci.gsfc.nasa.gov/servlet/RenderData?si=1696692&cs=gs&format=TIFF&width=3600&height=1800"
f.retrieve(url, "test.TIFF")

我收到错误

  

IOError:[Errno套接字错误] [SSL:UNKNOWN_PROTOCOL]未知协议(_ssl.c:590)

我发现一个类似的问题here通过创建一个新的SSLContext来解决错误。但是我无法弄清楚如何根据我的需要保存下载的文件。

2 个答案:

答案 0 :(得分:1)

这似乎有效:

from urllib.request import urlretrieve
url = 'https://neo.sci.gsfc.nasa.gov/servlet/RenderData?si=1696692&cs=gs&format=TIFF&width=3600&height=1800'
urlretrieve(url, 'result.TIFF')

不确定这是否适用于Python 2.稍后会更新我的回答。

答案 1 :(得分:1)

我找到了一个使用urllib2的python 2解决方案,对我有用:

import urllib2
url = "https://neo.sci.gsfc.nasa.gov/servlet/RenderData?si=1696692&cs=gs&format=TIFF&width=3600&height=1800"
f = urllib2.urlopen(url)
data = f.read()
with open("img.TIFF", "wb") as imgfile:
    imgfile.write(data)