Python的yfinance库调用Ticker.history报错JSONDecodeError问题求助
yfinance调用history()方法触发JSONDecodeError的解决方案
JSONDecodeError: Expecting value: line 1 column 1 (char 0)报错的核心原因是yfinance向雅虎财经接口请求数据时,拿到的响应为空或者返回了非JSON格式的内容(如拦截页面、错误提示页HTML),无法完成JSON解析。
解决方法
- 升级yfinance到最新版本
老版本yfinance未适配雅虎财经最新接口规则,是该报错最高发的原因,执行以下命令升级:
pip install --upgrade yfinance
- 配置网络代理
雅虎财经接口在部分地区无法正常访问,请求被拦截后会返回空响应,可在初始化Ticker对象时指定代理参数,示例如下:
import yfinance as yf # 替换为实际可用的代理地址 tickerData = yf.Ticker("BTC-USD", proxy="http://127.0.0.1:7890") tickerDf = tickerData.history()
- 增加异常捕获逻辑
避免单次请求失败直接中断程序,可增加重试或异常捕获处理:
import yfinance as yf import json try: tickerData = yf.Ticker("BTC-USD") tickerDf = tickerData.history() except json.JSONDecodeError: print("数据请求失败,请检查yfinance版本或网络连接后重试")
内容的提问来源于stack exchange,提问作者aditya
相关产品推荐
相关产品推荐

