热点$$$上市公司公告事件驱动Agent:实时抓取+影响研判方案
本文介绍如何构建一个针对上市公司公告的事件驱动Agent,核心功能是实时抓取公告数据,并结合规则与模型对影响进行快速研判。下文从数据源、抓取、解析、研判到输出,分步说明可落地的实现方案。
一、整体架构与数据流
Agent按“采集→清洗→存储→研判→推送”五段流水线运行。关键路径如下:
- 公告源:巨潮资讯网、上交所、深交所、港交所披露易
- 抓取层:
requests+APScheduler或Scrapy增量爬虫 - 消息队列:
Redis或Kafka,端口默认6379/9092 - 研判层:规则引擎 + 轻量级文本分类模型
- 输出层:
Webhook推送到企业微信/钉钉/自建看板
二、实时抓取:从公告源到本地队列
优先使用官方公开接口,避免全站爬取。以巨潮资讯网为例,公告查询接口通常为:
POST http://www.cninfo.com.cn/new/hisAnnouncement/query关键请求参数包括 stock、searchkey、category、pageNum。建议设置 pageSize=30,轮询间隔 10~30 秒。抓取到新公告后,立即写入 Redis 列表:
import redis, json
r = redis.Redis(host='127.0.0.1', port=6379, db=0)
r.lpush('announcement_queue', json.dumps(item))注意:对同一股票代码去重,可用 Redis 的 SETNX 以公告ID为键,避免重复处理。
三、公告解析:提取关键字段与正文
公告通常为 PDF 或 HTML。建议先提取元数据,再按需下载正文。元数据字段至少包括:
- 股票代码、股票简称
- 公告标题、公告类型
- 发布日期、公告ID
- 原文链接
正文解析可用 pdfplumber 或 BeautifulSoup。对于标题,直接做关键词匹配即可快速分类。例如:
keywords = {
'业绩预告': ['业绩预告', '预增', '预减', '扭亏'],
'重大合同': ['中标', '合同', '订单'],
'股权变动': ['增持', '减持', '回购', '质押'],
'风险提示': ['风险提示', '立案', '处罚', '退市']
}四、影响研判:规则先行,模型补充
研判目标:输出“利好/利空/中性”及影响强度(1~5级)。建议采用两级策略。
第一级:规则引擎
根据公告类型和关键数字直接打分。例如:
- 业绩预增且净利润增幅 > 50%:利好,强度4
- 股东减持比例 > 2%:利空,强度3
- 立案调查:利空,强度5
规则可配置在 YAML 文件中,便于调整。
第二级:文本分类模型
对规则无法覆盖的公告,使用轻量级模型。推荐 FastText 或 TextCNN,输入为公告标题+前200字正文。训练数据可人工标注历史公告。输出类别概率后,与规则结果加权融合。
final_score = 0.6 * rule_score + 0.4 * model_score五、事件驱动触发与推送
当研判结果满足以下任一条件时,触发推送:
- 影响强度 ≥ 4
- 公告类型为“立案调查”“退市风险”“重大合同”
- 同一股票连续两条利好/利空公告
推送内容包含:股票代码、公告标题、研判结论、强度、原文链接。推送方式可用 Webhook:
curl -X POST https://your-webhook-url \
-H 'Content-Type: application/json' \
-d '{"stock":"000001","title":"...","sentiment":"利好","strength":4}'六、部署与监控要点
- 使用
Docker部署抓取与研判服务,端口映射如5000:5000 - 监控队列长度:
LLEN announcement_queue,超过阈值告警 - 日志记录每条公告的处理耗时与研判结果,便于回溯
- 对官方接口设置
User-Agent和请求间隔,避免被封
七、小结
该Agent的核心在于“实时抓取+规则研判”的闭环。先跑通最小可用版本:抓取巨潮资讯网、解析标题、规则打分、Webhook推送。后续再逐步加入正文解析、模型分类和回测验证。整个方案不依赖复杂基础设施,适合个人或小团队快速落地。



