首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pandas-datareader世界银行API崩溃

pandas-datareader世界银行API崩溃
EN

Stack Overflow用户
提问于 2020-06-22 05:22:38
回答 2查看 420关注 0票数 3

为什么世界银行API的最新示例不适用于pandas-datareader

https://pandas-datareader.readthedocs.io/en/latest/remote_data.html#remote-data-wb

代码语言:javascript
复制
from pandas_datareader import wb

matches = wb.search('gdp.*capita.*const')
dat = wb.download(indicator='NY.GDP.PCAP.KD', country=['US', 'CA', 'MX'], start=2005, end=2008)
print(dat)

给了我这个:

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:\Python36\lib\site-packages\urllib3\connectionpool.py", line 601, in urlopen
    chunked=chunked)
  File "C:\Python36\lib\site-packages\urllib3\connectionpool.py", line 346, in _make_request
    self._validate_conn(conn)
  File "C:\Python36\lib\site-packages\urllib3\connectionpool.py", line 850, in _validate_conn
    conn.connect()
  File "C:\Python36\lib\site-packages\urllib3\connection.py", line 326, in connect
    ssl_context=context)
  File "C:\Python36\lib\site-packages\urllib3\util\ssl_.py", line 329, in ssl_wrap_socket
    return context.wrap_socket(sock, server_hostname=server_hostname)
  File "C:\Python36\lib\ssl.py", line 407, in wrap_socket
    _context=self, _session=session)
  File "C:\Python36\lib\ssl.py", line 814, in __init__
    self.do_handshake()
  File "C:\Python36\lib\ssl.py", line 1068, in do_handshake
    self._sslobj.do_handshake()
  File "C:\Python36\lib\ssl.py", line 689, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:833)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python36\lib\site-packages\requests\adapters.py", line 449, in send
    timeout=timeout
  File "C:\Python36\lib\site-packages\urllib3\connectionpool.py", line 639, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "C:\Python36\lib\site-packages\urllib3\util\retry.py", line 388, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.worldbank.org', port=443): Max retries exceeded with url: /v2/indicators?per_page=50000&format=json (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:833)'),))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/Jason/Google Drive/pycharm/test.py", line 3, in <module>
    matches = wb.search('gdp.*capita.*const')
  File "C:\Python36\lib\site-packages\pandas_datareader\wb.py", line 938, in search
    return WorldBankReader(**kwargs).search(string=string, field=field, case=case)
  File "C:\Python36\lib\site-packages\pandas_datareader\wb.py", line 809, in search
    indicators = self.get_indicators()
  File "C:\Python36\lib\site-packages\pandas_datareader\wb.py", line 745, in get_indicators
    resp = self._get_response(url)
  File "C:\Python36\lib\site-packages\pandas_datareader\base.py", line 155, in _get_response
    response = self.session.get(url, params=params, headers=headers)
  File "C:\Python36\lib\site-packages\requests\sessions.py", line 546, in get
    return self.request('GET', url, **kwargs)
  File "C:\Python36\lib\site-packages\requests\sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Python36\lib\site-packages\requests\sessions.py", line 646, in send
    r = adapter.send(request, **kwargs)
  File "C:\Python36\lib\site-packages\requests\adapters.py", line 514, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='api.worldbank.org', port=443): Max retries exceeded with url: /v2/indicators?per_page=50000&format=json (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:833)'),))

它曾经在0.7版本上工作。我已经有一年左右没有运行它了,今天运行它,给了我同样的错误,所以我升级到了最新的datareader版本,它仍然不能工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-22 22:18:03

我没有解决的办法。但它在周五起作用了。世界银行最近更新了他们的证书,所以这可能是原因。我在我的应用程序中使用了世界银行的数据,所以卡在这里了。

此后,我在pandas_datareader github页面中提出了一个请求:https://github.com/pydata/pandas-datareader/issues/791

票数 1
EN

Stack Overflow用户

发布于 2020-06-22 23:45:15

我相信我们有很多问题,

1-指示器应该在数组'NY.GDP.PCAP.KD‘中

代码语言:javascript
复制
 dat = wb.download(indicator=['NY.GDP.PCAP.KD'], country=['US', 'CA', 'MX'], start=2005, end=2008)
    print(dat)

2-现在来主要的问题,让我们解决它,并访问您的网址直接在世界银行的数据,在这里试一试,它是工作的,所以问题与pandas_datareader SSL (可能套接字客户端)需要更新。

https://api.worldbank.org/v2/countries/US;CA;MX/indicators/NY.GDP.PCAP.KD?date=2005%3A2008&per_page=25000&format=json

3-除了SSL问题之外,我还面临着另一个与世界银行的一些新限制有关的问题,对于数据的大小,我仍然需要更多的调查来证实这一点。尽管如此,它仍然在那里(它可能与他们的URL长度限制的新证书有关,可能是,请在下面检查它。

===更新===

通过测试确认,存在国家数量限制,尝试删除任何国家,以减少到65个,这将是可行的

https://api.worldbank.org/v2/countries/AFG;AGO;ARE;AUS;AUT;AZE;BEL;BGD;BHR;BRA;CAN;CHE;CHN;CZE;DEU;DNK;DZA;EGY;ESP;FIN;FRA;GBR;GHA;HKG;HUN;IDN;IND;IRL;IRN;IRQ;ITA;JOR;JPN;KAZ;KEN;KOR;KWT;LBN;LBY;LKA;MAR;MYS;NGA;NLD;OMN;PAK;PHL;POL;QAT;RUS;SAU;SDN;SGP;SOM;SWE;SYR;THA;TUR;TWN;TZA;UGA;UKR;USA;VNM;YEM;ZAF/indicators/AG.LND.ARBL.ZS?date=2005%3A2008&per_page=25000&format=json

=====更新26-06-2020

就今天而言,上面的链接又起作用了,似乎他们对我上周的门票做出了回应。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62504597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档