Tuesday, September 15, 2026
用 finlight 在 Python 中实时流式获取股票新闻
用 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 回调就会被触发并收到该文章,其中包含它的
sentiment、title、source,以及(因为开启了 includeEntities)被标注的公司。
发生了什么
client.websocket.connect(...)打开一个持久连接并流式推送匹配的文章。它是一个异步调用,因此运行在asyncio.run(...)中。GetArticlesWebSocketParams接受与 REST API 相同类型的过滤条件:tickers、query、sources、countries、categories、language、includeEntities等。on_article是你的处理函数。在这里,你可以把数据推入队列、更新仪表盘或评估信号,而不只是打印。
SDK 会替你管理连接,包括带退避的自动重连,因此一次断线不会让你的数据流中断。
增强版与原始版
client.websocket 是增强版数据流:文章到达时带有完整增强(情绪和实体)。如果你只需要尽快获取轻量的
基础文章数据,还有 client.raw_websocket,其 connect(...) 用法相同。需要分析时用增强版,需要最低
延迟时用原始版。
精确过滤到你需要的内容
由于 WebSocket 接受与 REST 相同的过滤条件,你可以流式获取一个精确的切片:只要加密货币新闻、只要一个 自选股清单、只要某些国家。完整的过滤条件见 高级过滤。
接下来去哪里
- REST、WebSocket、Webhooks 与 MCP, 判断何时该用流式。
- 完整文档,了解 WebSocket 指南。
