无法获取JSON数据元素,如何提取ACC股票期货指定到期日的买卖总量?
提取NSE ACC期货指定到期日的买卖总量
实现步骤及代码
NSE的公开API需要携带合法请求头才能正常访问,以下是完整的可运行代码:
import requests # 设置请求头,模拟浏览器访问以避开反爬拦截 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36', 'Accept-Language': 'en-US,en;q=0.9' } # 指向ACC期货数据的API地址 api_url = 'https://www.nseindia.com/api/quote-derivative?symbol=ACC' try: # 发送GET请求获取数据 response = requests.get(api_url, headers=headers) response.raise_for_status() # 检查请求是否成功 data = response.json() # 指定要查找的到期日(需与返回数据中的日期格式完全匹配) target_expiry = '2022-10-27' # 遍历所有期货合约,匹配目标到期日 for contract in data['stocks']: if contract['metadata']['expiryDate'] == target_expiry: # 提取目标字段 total_buy_qty = contract['marketDeptOrderBook']['totalBuyQuantity'] total_sell_qty = contract['marketDeptOrderBook']['totalSellQuantity'] print(f"ACC期货 {target_expiry} 到期合约数据:") print(f"总买单量: {total_buy_qty}") print(f"总卖单量: {total_sell_qty}") break else: print(f"未找到 {target_expiry} 到期的ACC期货合约") except requests.exceptions.RequestException as e: print(f"请求失败: {e}") except KeyError as e: print(f"JSON结构变动,缺失指定字段: {e}")
关键说明
- 请求头必须设置:NSE服务器会校验
User-Agent,缺失或不合法会返回403错误。 - JSON结构对应:返回数据中
stocks是所有ACC期货合约的列表,每个合约的metadata存到期日,marketDeptOrderBook下是买卖总量字段。 - 异常处理:捕获请求错误和字段缺失问题,避免程序直接崩溃。
内容的提问来源于stack exchange,提问作者Python Learner
相关产品推荐
相关产品推荐

