示例代码:
import yfinance as yf
mmm = yf.Ticker('MMM')
mmm.history()
报错信息:
JSONDecodeError Traceback (most recent call last) <ipython-input-6-68e978705cca> in <module> 1 mmm = yf.Ticker('MMM') ----> 2 mmm.history() ~/opt/anaconda3/lib/python3.8/site-packages/yfinance/base.py in history(self, period, interval, start, end, prepost, actions, auto_adjust, back_adjust, proxy, rounding, tz, **kwargs) 155 "Our engineers are working quickly to resolve " 156 "the issue. Thank you for your patience.") --> 157 data = data.json() 158 159 # Work with errors ~/opt/anaconda3/lib/python3.8/site-packages/requests/models.py in json(self, **kwargs) 896 # used. 897 pass --> 898 return complexjson.loads(self.text, **kwargs) 899 900 @property ~/opt/anaconda3/lib/python3.8/json/__init__.py in loads(s, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw) 355 parse_int is None and parse_float is None and 356 parse_constant is None and object_pairs_hook is None and not kw): --> 357 return _default_decoder.decode(s) 358 if cls is None: 359 cls = JSONDecoder ~/opt/anaconda3/lib/python3.8/json/decoder.py in decode(self, s, _w) 335 336 """ --> 337 obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 338 end = _w(s, end).end() 339 if end != len(s): ~/opt/anaconda3/lib/python3.8/json/decoder.py in raw_decode(self, s, idx) 353 obj, end = self.scan_once(s, idx) 354 except StopIteration as err: --> 355 raise JSONDecodeError("Expecting value", s, err.value) from None 356 return obj, end JSONDecodeError: Expecting value: line 1 column 1 (char 0)
解决方法:
pip install yfinance --upgrade --no-cache-dir
或者
pip uninstall yfinance
pip uninstall pandas-datareader
pip install yfinance --upgrade --no-cache-dir
pip install pandas-datareader
或者
也可以尝试yahoo_fin,使用起来很简单,维护也更好。
例如,
from yahoo_fin.stock_info import *
df = get_data('BYND', start_date='2020-08-14')