首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >雅虎金融Python API JSON错误?

雅虎金融Python API JSON错误?
EN

Stack Overflow用户
提问于 2016-10-21 14:33:32
回答 1查看 1.5K关注 0票数 1

我一直试图使用来获取历史价格,但每次我尝试运行代码时,都会遇到相同的错误。下面是我的代码和错误:

Python代码

代码语言:javascript
复制
from yahoo_finance import Share 

name = Share('YHOO') 
temp = (name.get_historical('2014-04-25','2015-04-29'))

print (temp)

和错误信息

代码语言:javascript
复制
> 
> JSONDecodeError                           Traceback (most recent call
> last) <ipython-input-1-65dd835a5e8b> in <module>()
> ----> 1 from fetch import *
> 
> /Users/peterbullard/SMP/fetch.py in <module>()
>       3 
> ----> 4 name = Share('YHOO')
>       5 temp = (name.get_historical('2014-04-25', '2015-04-29'))
>       6 
> 
> /Users/peterbullard/anaconda/lib/python3.5/site-packages/yahoo_finance-1.2.1-py3.5.egg/yahoo_finance/__init__.py
> in __init__(self, symbol)
>     176         self._table = 'quotes'
>     177         self._key = 'symbol'
> --> 178         self.refresh()
>     179 
>     180     def _fetch(self):
> 
> /Users/peterbullard/anaconda/lib/python3.5/site-packages/yahoo_finance-1.2.1-py3.5.egg/yahoo_finance/__init__.py
> in refresh(self)
>     140 
>     141         """
> --> 142         self.data_set = self._fetch()
>     143 
>     144 
> 
> /Users/peterbullard/anaconda/lib/python3.5/site-packages/yahoo_finance-1.2.1-py3.5.egg/yahoo_finance/__init__.py
> in _fetch(self)
>     179 
>     180     def _fetch(self):
> --> 181         data = super(Share, self)._fetch()
>     182         if data['LastTradeDate'] and data['LastTradeTime']:
>     183             data[u'LastTradeDateTimeUTC'] = edt_to_utc('{0} {1}'.format(data['LastTradeDate'], data['LastTradeTime']))
> 
> /Users/peterbullard/anaconda/lib/python3.5/site-packages/yahoo_finance-1.2.1-py3.5.egg/yahoo_finance/__init__.py
> in _fetch(self)
>     132     def _fetch(self):
>     133         query = self._prepare_query(table=self._table, key=self._key)
> --> 134         data = self._request(query)
>     135         return data
>     136 
> 
> /Users/peterbullard/anaconda/lib/python3.5/site-packages/yahoo_finance-1.2.1-py3.5.egg/yahoo_finance/__init__.py
> in _request(self, query)
>     116 
>     117     def _request(self, query):
> --> 118         response = yql.YQLQuery().execute(query)
>     119         try:
>     120             _, results = response['query']['results'].popitem()
> 
> /Users/peterbullard/anaconda/lib/python3.5/site-packages/yahoo_finance-1.2.1-py3.5.egg/yahoo_finance/yql.py
> in execute(self, yql, token)
>      58 
>      59     self.connection.request('GET', PUBLIC_API_URL + '?' + urlencode({ 'q': yql, 'format': 'json', 'env': DATATABLES_URL }))
> ---> 60     return simplejson.loads(self.connection.getresponse().read())
>      61 
>      62   def __del__(self):
> 
> /Users/peterbullard/anaconda/lib/python3.5/site-packages/simplejson/__init__.py
> in loads(s, encoding, cls, object_hook, parse_float, parse_int,
> parse_constant, object_pairs_hook, use_decimal, **kw)
>     514             parse_constant is None and object_pairs_hook is None
>     515             and not use_decimal and not kw):
> --> 516         return _default_decoder.decode(s)
>     517     if cls is None:
>     518         cls = JSONDecoder
> 
> /Users/peterbullard/anaconda/lib/python3.5/site-packages/simplejson/decoder.py
> in decode(self, s, _w, _PY3)
>     368         if _PY3 and isinstance(s, binary_type):
>     369             s = s.decode(self.encoding)
> --> 370         obj, end = self.raw_decode(s)
>     371         end = _w(s, end).end()
>     372         if end != len(s):
> 
> /Users/peterbullard/anaconda/lib/python3.5/site-packages/simplejson/decoder.py
> in raw_decode(self, s, idx, _w, _PY3)
>     398             elif ord0 == 0xef and s[idx:idx + 3] == '\xef\xbb\xbf':
>     399                 idx += 3
> --> 400         return self.scan_once(s, idx=_w(s, idx).end())
> 
> JSONDecodeError: Expecting value: line 1 column 1 (char 0)

如果有用的话,我使用的是朱庇特笔记本和Python 3。

这是终端的控制台日志。

W08:59:40.681 NotebookApp]未经识别的JSON文件版本,假设启用了版本1 i08:59:41.410 NotebookApp,2个内核找到了I08:59:41.459 NotebookApp端口8888已经在使用,正在尝试另一个端口。I 08:59:41.765 NotebookApp启用i 08:59:41.768 NotebookApp启用I 08:59:41.821 NotebookApp✓nbpresent导出启用W 08:59:41.821 NotebookApp✗nbpresent导出禁用:没有模块名为'nbbrowserpdf‘i 08:59:41.825从本地目录为笔记本提供服务: /Users/peterbullard i 08:59:59:41.825 NotebookApp 0活动内核i 08:59:41.825 NotebookApp朱庇特笔记本运行在:http://localhost:8889/ I 08:59:41.825NotebookApp使用Control停止此服务器并关闭所有内核(两次以跳过确认)。I 08:59:53.346 NotebookApp内核启动: 92b75861-94a5-4002-9ab4-97988c0cebfe W 08:59:53.365 NotebookApp 404 GET /kernelspecs/Python%20root/徽标-64x64.png(:1) 11.76ms referer=http://localhost:8889/notebooks/SMP/Test.ipynb I 08:59:55.917 NotebookApp内核重新启动:92b75861-94a5-94a5-4002-9ab4-97988c0cebfe

EN

回答 1

Stack Overflow用户

发布于 2017-12-01 22:40:37

我遵循了这里的指示,https://pypi.python.org/pypi/yahoo-finance

上面写着:

雅虎!金融后端是http://datatables.org/。如果此服务已关闭或有网络问题,您将收到来自组YQL*的错误,例如。YQLQueryError。

因此,服务已经退出,这就是为什么您一直得到一个YQL错误。如果这是2016年的问题的话,我想这项服务已经有一段时间没有开通了。

对于修复,您可以尝试雅虎查询语言(YQL)。这里是要开始学习的页面,https://developer.yahoo.com/yql/#python

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

https://stackoverflow.com/questions/40179338

复制
相关文章

相似问题

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