finlight Logo

Tuesday, September 15, 2026

用 finlight 在 Python 中实时流式获取股票新闻

Kevin Bartsch

用 finlight 在 Python 中实时流式获取股票新闻

轮询 API 获取新闻意味着你总会慢一步。对于实时仪表盘和交易信号,你希望每篇文章在发布的那一刻就到手。 finlight 的 WebSocket 正是这么做的,而 Python SDK 让它只需几行代码。在本教程中,你将构建一个实时 股票新闻流,按股票代码过滤,且已带情绪评分。

安装 SDK

pip install finlight-client

完整示例

import asyncio

from finlight_client import FinlightApi, ApiConfig
from finlight_client.models import GetArticlesWebSocketParams

client = FinlightApi(config=ApiConfig(api_key="YOUR_API_KEY"))


def on_article(article):
    print(f"[{article.sentiment}] {article.title} - {article.source}")


async def main():
    await client.websocket.connect(
        request_payload=GetArticlesWebSocketParams(
            tickers=["AAPL", "NVDA"],
            includeEntities=True,
        ),
        on_article=on_article,
    )


if __name__ == "__main__":
    asyncio.run(main())

运行它,每当有一篇匹配的文章发布时,你的 on_article 回调就会被触发并收到该文章,其中包含它的 sentimenttitlesource,以及(因为开启了 includeEntities)被标注的公司。

发生了什么

  • client.websocket.connect(...) 打开一个持久连接并流式推送匹配的文章。它是一个异步调用,因此运行在 asyncio.run(...) 中。
  • GetArticlesWebSocketParams 接受与 REST API 相同类型的过滤条件:tickersquerysourcescountriescategorieslanguageincludeEntities 等。
  • on_article 是你的处理函数。在这里,你可以把数据推入队列、更新仪表盘或评估信号,而不只是打印。

SDK 会替你管理连接,包括带退避的自动重连,因此一次断线不会让你的数据流中断。

增强版与原始版

client.websocket 是增强版数据流:文章到达时带有完整增强(情绪和实体)。如果你只需要尽快获取轻量的 基础文章数据,还有 client.raw_websocket,其 connect(...) 用法相同。需要分析时用增强版,需要最低 延迟时用原始版。

精确过滤到你需要的内容

由于 WebSocket 接受与 REST 相同的过滤条件,你可以流式获取一个精确的切片:只要加密货币新闻、只要一个 自选股清单、只要某些国家。完整的过滤条件见 高级过滤

接下来去哪里

获取免费 API 密钥 →