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

请求NSEIndia衍生品报价API时触发JSONDecodeError求助

解决NSEIndia衍生品API的JSONDecodeError问题

出现这个错误是因为直接请求API时,NSEIndia的反爬机制会拦截请求,返回的不是有效JSON数据(大概率是反爬提示的HTML页面或者空内容)。解决核心是先通过访问官网主页让session获取必要的Cookie,再发起API请求。

修改后的代码如下:

import requests
import json

# 初始化会话
session = requests.Session()
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36'
}

# 先访问NSE主页,获取服务器要求的Cookie
session.get('https://www.nseindia.com', headers=headers)

# 发起衍生品报价API请求
url = 'https://www.nseindia.com/api/quote-derivative?symbol=NIFTY&identifier=FUTIDXNIFTY29-02-2024XX0.00'
response = session.get(url, headers=headers)

# 校验请求状态并处理数据
if response.status_code == 200:
    try:
        data = response.json()
        print(data)
    except json.JSONDecodeError as e:
        # 若仍报错,打印返回内容排查问题
        print("返回内容不是有效JSON:")
        print(response.text)
else:
    print(f"请求失败,状态码:{response.status_code}")

关键细节:

  • 必须先访问NSE主页:服务器会给会话设置必要的Cookie,没有这些Cookie的API请求会被直接拦截
  • 简化了请求头:去掉了可能导致解码异常的br编码格式,让requests自动处理编码
  • 增加了错误排查逻辑:如果还是解码失败,直接打印返回内容,能快速看到是反爬页面还是其他问题

内容的提问来源于stack exchange,提问作者sachin sawant

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 00:35:04