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

使用stocknewsapi时日期格式不匹配ValueError问题排查

解决StockNewsAPI调用的日期格式错误及前一交易日新闻获取问题

1. 修复日期格式不匹配的ValueError

  • 错误根源:你的OHLC数据日期是YYYY-MM-DD格式(比如'2018-02-22'),但StockNewsAPI要求的日期参数格式是%m-%d-%Y(即'MM-DD-YYYY'),格式不匹配导致解析失败。
  • 处理步骤:
    1. 把原始日期字符串转成datetime对象
    2. 按照API要求的格式重新生成日期字符串
  • 原生Python处理示例:
import datetime

# 原始日期字符串
raw_date = '2018-02-22'
# 转成datetime对象
date_obj = datetime.datetime.strptime(raw_date, '%Y-%m-%d')
# 格式化为API需要的格式
formatted_date = date_obj.strftime('%m-%d-%Y')
# 此时formatted_date为'02-22-2018',可直接传给API
  • Pandas批量处理OHLC数据示例:
import pandas as pd

# 假设你的OHLC数据存在df中,日期列名为'date'
df['date'] = pd.to_datetime(df['date'])
# 生成符合API要求的日期列
df['api_date'] = df['date'].dt.strftime('%m-%d-%Y')

2. 获取目标日期前一个交易日的新闻

直接对日期减1天会碰到周末或节假日,必须基于交易日历计算,两种靠谱方法:

方法一:用Pandas工作日偏移

from pandas.tseries.offsets import BusinessDay

# 对目标日期减去1个工作日
df['prev_trading_day'] = df['date'] - BusinessDay(1)
# 格式化为API需要的格式
df['prev_trading_day_api'] = df['prev_trading_day'].dt.strftime('%m-%d-%Y')
  • 注意:Pandas默认工作日历不含市场节假日,若需适配美股/A股等特定市场,可搭配pandas_market_calendars库自定义交易日历。

方法二:基于已有OHLC数据的日期序列

如果你的OHLC数据本身就是按交易日排序的,直接取上一行的日期就是前一个交易日:

# 先确保日期列已排序
df = df.sort_values('date')
# 偏移一行获取前一交易日日期
df['prev_trading_day'] = df['date'].shift(1)
# 格式化为API要求的格式
df['prev_trading_day_api'] = df['prev_trading_day'].dt.strftime('%m-%d-%Y')

调用API的示例代码

拿到格式化后的前一交易日日期后,传入API参数即可:

import requests

API_KEY = '你的API密钥'
BASE_URL = 'https://stocknewsapi.com/api/v1'

for idx, row in df.iterrows():
    # 跳过第一行,因为shift(1)会生成NaN
    if pd.isna(row['prev_trading_day_api']):
        df.loc[idx, 'news'] = []
        continue
    params = {
        'ticker': 'AAPL',  # 替换为你的目标股票代码
        'date': row['prev_trading_day_api'],
        'api_token': API_KEY
    }
    response = requests.get(BASE_URL, params=params)
    # 把新闻数据存入df的news列
    df.loc[idx, 'news'] = response.json().get('data', [])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:05:13