You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用nsepy获取SBIN2018年股票数据时遇重定向及属性错误

解决nsepy获取SBIN股票数据时的重定向错误与线程属性问题

问题重现

执行以下代码获取印度国家银行(SBIN)2018年股票数据时:

from nsepy import get_history               
import datetime as dt                       

sbi_df = get_history(symbol="SBIN", start=dt.date(2018, 1, 1), end=dt.date(2018, 12, 31))
print(sbi_df)

出现两类错误:

  1. requests.exceptions.TooManyRedirects: Exceeded 30 redirects:请求陷入重定向循环,核心原因是NSE官方接口更新,旧版nsepy未适配。
  2. AttributeError: 'ThreadReturns' object has no attribute 'result':多线程任务因重定向失败,未生成预期的result属性,属于衍生错误。

解决方案

方案1:更新nsepy到最新版本

旧版nsepy的API请求逻辑已不兼容NSE当前的接口规则,执行升级命令:

pip install --upgrade nsepy

升级后重新运行原代码,大概率解决重定向问题。

方案2:手动拆分时间区间,避免自动多线程

nsepy默认会将跨度过长的时间拆分为多段,用多线程并行请求,可能加重重定向问题。手动拆分时间区间,分多次请求后合并:

from nsepy import get_history               
import datetime as dt                       
import pandas as pd

# 拆分2018年为上下半年,分别请求
sbi_df_h1 = get_history(symbol="SBIN", start=dt.date(2018, 1, 1), end=dt.date(2018, 6, 30))
sbi_df_h2 = get_history(symbol="SBIN", start=dt.date(2018, 7, 1), end=dt.date(2018, 12, 31))
# 合并数据
sbi_df = pd.concat([sbi_df_h1, sbi_df_h2])
print(sbi_df)

方案3:替换为维护更活跃的yfinance库

如果nsepy仍无法正常工作,改用yfinance获取NSE股票数据(需先安装yfinance):

pip install yfinance

示例代码:

import yfinance as yf
import datetime as dt

start_date = dt.date(2018, 1, 1)
end_date = dt.date(2018, 12, 31)
# NSE股票代码需加.NS后缀
sbi_ticker = yf.Ticker("SBIN.NS")
sbi_df = sbi_ticker.history(start=start_date, end=end_date)
print(sbi_df)

内容的提问来源于stack exchange,提问作者Sachin Jain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 07:12:03