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

网页爬取时Pandas无法解析NSE India的TIMESTAMP问题求助

解决NSE期权链API中Timestamp字段提取问题

问题根源

你不需要把整个JSON响应转换成Pandas DataFrame来提取timestamp——因为response['records']本身是一个字典,timestamp是这个字典里的单个字符串值,用DataFrame处理反而会绕弯路。

正确提取方法

方法1:直接从JSON字典提取(推荐)

跳过将整个响应转成DataFrame的步骤,直接从返回的JSON数据中取值:

url = 'https://www.nseindia.com/api/option-chain-indices?symbol=NIFTY'  
headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
        'accept-encoding': 'gzip, deflate, br',
        'accept-language': 'en-US,en;q=0.5',
        'Accept':'application/json'
    }   
session = requests.Session()  
request = session.get(url, headers=headers)  
cookies = dict(request.cookies)  
response = session.get(url, headers=headers, cookies=cookies).json()   

# 直接提取timestamp
update_time = response['records']['timestamp']
print(update_time)

方法2:如果你已经将响应转成了DataFrame

如果坚持要保留rawdata = pd.DataFrame(response)这一步,那么需要先取出records列对应的字典,再提取timestamp:

# 基于你已有的rawdata变量
records_dict = rawdata['records'].iloc[0]  # 取出records列的第一个(也是唯一一个)字典元素
update_time = records_dict['timestamp']
print(update_time)

之前尝试失败的原因

  • 尝试1:pd.DataFrame(rawdata['records']['timestamp']) 错误。rawdata['records']是Pandas Series,不是字典,无法直接用['timestamp']取值;而且即使拿到timestamp字符串,单个字符串不能直接构造DataFrame,因此抛出ValueError。
  • 尝试2:pd.DataFrame(rawdata['records']).get(['timestamp']) 错误。rawdata['records']是单个字典,转成DataFrame后,timestamp是其中一列,但get(['timestamp'])的用法不对,且如果DataFrame构造时结构不符合预期,会返回None。
  • 尝试3:因尝试2的逻辑错误,找不到对应列,所以触发默认返回值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:01:22