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

使用pd.read_csv加载NSE CSV URL失败,但浏览器可正常访问

解决pd.read_csv无法加载NSE存档CSV文件的问题

NSE(印度国家证券交易所)的存档服务器会校验请求的User-Agent字段:浏览器发起请求时会自动带上该字段标识自身,而pd.read_csv默认发起的请求无此标识,因此被服务器拒绝访问。以下是两种可行的解决方案:

方案1:使用requests库先获取内容

通过requests模拟浏览器请求头获取CSV内容,再传递给pandas解析:

import pandas as pd
import requests
from io import StringIO

# 目标CSV链接
url = "https://nsearchives.nseindia.com/content/equities/sec_list_16072024.csv"

# 模拟浏览器请求头(可根据自身浏览器调整)
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
}

# 发送请求并校验响应状态
response = requests.get(url, headers=headers)
response.raise_for_status()

# 解析CSV内容
stocks_circuit_limits = pd.read_csv(StringIO(response.text))

方案2:直接给pd.read_csv传入请求头

利用pd.read_csv的storage_options参数,直接传入请求头信息:

import pandas as pd

url = "https://nsearchives.nseindia.com/content/equities/sec_list_16072024.csv"

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
}

# 通过storage_options传递请求头
stocks_circuit_limits = pd.read_csv(url, storage_options={"headers": headers})

注意事项

  • 若后续仍出现访问问题,可尝试添加更多浏览器常见请求头(如Accept、Accept-Language等);
  • User-Agent可从浏览器开发者工具中获取(F12 → 网络面板 → 任意请求的请求头),确保与真实浏览器一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:32:12