使用https使用python包请求下载文件时出错

时间:2015-04-29 05:05:57

标签: python python-2.7 python-requests

我是Python的初学者,并且一直在努力使用包请求下载文件。我的代码适用于带http的网址,但不适用于https。代码如下:

import requests
url = 'https://firms.modaps.eosdis.nasa.gov/active_fire/shapes/zips/Central_America_24h.zip'

print "downloading with requests"
r = requests.get(url)
with open("Central_America_24h.zip", "wb") as code:
    code.write(r.content) 

我收到以下错误:

Warning (from warnings module):
  File "C:\Python27\ArcGIS10.1\lib\site-packages\requests\packages\urllib3\util\ssl_.py", line 90
    InsecurePlatformWarning
InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.

Traceback (most recent call last):
  File "C:\Users\lmixco\Downloads\descarga.py", line 8, in <module>
    r = requests.get(url)
  File "C:\Python27\ArcGIS10.1\lib\site-packages\requests\api.py", line 68, in get
    return request('get', url, **kwargs)
  File "C:\Python27\ArcGIS10.1\lib\site-packages\requests\api.py", line 50, in request
    response = session.request(method=method, url=url, **kwargs)
  File "C:\Python27\ArcGIS10.1\lib\site-packages\requests\sessions.py", line 465, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Python27\ArcGIS10.1\lib\site-packages\requests\sessions.py", line 594, in send
    history = [resp for resp in gen] if allow_redirects else []
  File "C:\Python27\ArcGIS10.1\lib\site-packages\requests\sessions.py", line 196, in resolve_redirects
    **adapter_kwargs
  File "C:\Python27\ArcGIS10.1\lib\site-packages\requests\sessions.py", line 573, in send
    r = adapter.send(request, **kwargs)
  File "C:\Python27\ArcGIS10.1\lib\site-packages\requests\adapters.py", line 431, in send
    raise SSLError(e, request=request)
SSLError: [Errno 8] _ssl.c:503: EOF occurred in violation of protocol

我一直在寻找解决方案,但一直没找到。任何帮助将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:1)

你需要安装一个包,使用这个

pip install requests[security]

对于debain / ubuntu,在安装上面的软件包之前安装它

apt-get install python-dev libffi-dev libssl-dev