【问题标题】:YFinance JSONDecodeError--latest versionYFinance JSONDecodeError--最新版
【发布时间】:2023-01-08 05:46:39
【问题描述】:

当我尝试下载历史数据时,收到以下错误消息:

Exception in thread Thread-6:
Traceback (most recent call last):
  File "E:\Anaconda\envs\finrl\lib\threading.py", line 932, in _bootstrap_inner
    self.run()
  File "E:\Anaconda\envs\finrl\lib\threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "E:\Anaconda\envs\finrl\lib\site-packages\multitasking\__init__.py", line 104, in _run_via_pool
    return callee(*args, **kwargs)
  File "E:\Anaconda\envs\finrl\lib\site-packages\yfinance\multi.py", line 169, in _download_one_threaded
    data = _download_one(ticker, start, end, auto_adjust, back_adjust,
  File "E:\Anaconda\envs\finrl\lib\site-packages\yfinance\multi.py", line 181, in _download_one
    return Ticker(ticker).history(period=period, interval=interval,
  File "E:\Anaconda\envs\finrl\lib\site-packages\yfinance\base.py", line 162, in history
    data = data.json()
  File "E:\Anaconda\envs\finrl\lib\site-packages\requests\models.py", line 910, in json
    return complexjson.loads(self.text, **kwargs)
  File "E:\Anaconda\envs\finrl\lib\json\__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "E:\Anaconda\envs\finrl\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "E:\Anaconda\envs\finrl\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

这是我的代码:

import yfinance as yf
data = yf.download("SPY AAPL", start="2017-01-01", end="2017-04-30")

我尝试了很多方法:

  1. 安装最新版本的yfinance
  2. 安装旧版yfinance
  3. 修改代码

    事实上,当我使用yahoo_fin 时,也出现了同样的错误。 希望有人帮我解决这个问题

【问题讨论】:

标签: yfinance


【解决方案1】:

你的代码是正确的。

发生这种情况是因为 Anaconda 用于模拟环境,因此数据包具有确定的版本,因此一切都是兼容的。在您的情况下发生的事情是 yfinance 较旧并且您的 JSON 版本与 yfinance 的某些功能不兼容,因为 yfinance 不再更新。

我建议您只使用 pip 将数据包 yfinance 安装在您的计算机上,而不是使用 anaconda 的环境:

pip install yfinance

然后它应该尝试获取所需库的正确版本。之后,你可以创建一个python文件,然后导入数据包

import yfinance as yf

然后执行你的下载代码

data = yf.download("SPY AAPL", start="2017-01-01", end="2017-04-30")

作为建议,尝试将不同的值作为列表而不是字符串传递,因为以后很难调试。而不是“SPY AAPL” -> ['SPY', 'AAPL']

编辑:也可能是您的财务版本已经过时了(但我不这么认为),如果是这种情况,那么您应该尝试在 anaconda 更新程序内部进行更新。否则,对于终端,它会是这样的:

pip install yfinance --upgrade

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-20
    • 2022-11-03
    • 2021-09-20
    • 2021-12-23
    • 2021-09-25
    • 2012-12-02
    • 2016-10-05
    • 1970-01-01
    相关资源
    最近更新 更多