微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

yFinance 的 JSON 解码错误 [JSONDecodeError: Expecting value: line 1 column 1 (char 0)]

如何解决yFinance 的 JSON 解码错误 [JSONDecodeError: Expecting value: line 1 column 1 (char 0)]

过去几周我一直在使用 yfinance 来提取一些股票的历史数据。我通常在每周结束时运行该程序以存储该周的数据,但是这个问题错误只是在上周随机开始发生。下面是调用 MMM 历史价格数据的简单示例。但是,期权合约方法也会出现同样的错误

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,idx)
    353             obj,end = self.scan_once(s,idx)
    354         except stopiteration as err:
--> 355             raise JSONDecodeError("Expecting value",err.value) from None
    356         return obj,end

JSONDecodeError: Expecting value: line 1 column 1 (char 0)

解决方法

我是 Stack Overflow 的新手,所以我无法投票,但我遇到了类似的问题。在看到@Barmar 离开的答案后,我去了 yfinance github,作者建议使用 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
,

tl;dr 2021 年 7 月的某个时候,雅虎财经对其代码进行了一些更改,现在必须更新与其“对话”的 Python 库,因此您可能需要更新您的模块。

这是我的故事:

我使用了一个稍微不同的包,叫做 yahoo_fin。我也遇到过这个错误,这一切都始于 2021 年 7 月 9 日。巧合的是,我在 yahoo_fin 的文档网站 here 上看到,雅虎财经最近进行了一些更改,这可能是影响所有内容的原因这些图书馆似乎从雅虎财经中提取他们的股票数据。

更新:2021 年 7 月 9 日 yahoo_fin 0.8.9.1 是 yahoo_fin 的最新版本。这包括由于雅虎财经网站最近的变化而导致的第二个补丁集合,这些变化影响了 get_data、get_live_price 和其他几种方法。如果您使用的是旧版本,请更新到 0.8.9.1。此外,还有两个新函数 get_company_info 和 get_company_officers,用于抓取公司相关数据。

更新:2021 年 7 月 yahoo_fin 0.8.9 于 2021 年 7 月发布。此版本包括修复由于雅虎财经最近发生的变化而导致的获取请求问题的补丁。这些更新会影响多个功能,包括抓取选项数据、get_quote_table、

最后,我不得不运行 pip install yahoo_fin --update,这解决了它。

,

如果有人仍然面临 jsonDecoder 错误的问题。尝试从 pycharm 文件夹的 venv 中删除 yfin。不知何故,我的系统没有在 pycharm 的 venv 中升级 yfin。我不得不手动删除 yfin 文件夹并升级 yfin。它现在为我工作。谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。