【01|研究背景与需求】
在金融、会计及公司治理领域的实证研究中,定向增发(Private Placement)是重要的研究议题。进行相关研究,首先需要获取高质量的公告文本数据作为分析基础。
巨潮资讯网(cninfo.com.cn)作为中国证监会指定的上市公司信息披露平台,是此类数据的权威来源。然而,传统的手动下载方式效率低下,难以满足大规模、长周期的研究需求。本研究分享一套完整的Python自动化解决方案,旨在为学术研究者提供高效、规范的数据获取工具。
【02|工具概述与流程】
本工具实现了从数据检索到文本转换的全流程自动化,主要包含以下四个核心模块:
- • 公告列表获取:模拟浏览器请求,按年份、股票代码批量获取公告元数据。
- • PDF文件下载:根据元数据中的链接,并发下载公告PDF文件至本地。
- • 文本内容提取:使用 pymupdf库,将PDF公告批量转换为纯文本(TXT)。
- • (可选)文本向量化:基于本地部署的Ollama嵌入模型,进行文本向量化与相似度计算示例。
【03|核心代码与数据文件说明】
1. 核心依赖库
代码严格依赖以下Python库,请提前安装:
# requirements.txt 示例requests>=2.28.1pandas>=1.5.0tqdm>=4.64.0pymupdf>=1.22.0numpy>=1.23.0
2. 关键数据文件:stock_list.json
该文件为工具的基础配置文件,存储了A股上市公司的代码与机构ID(orgId)的映射关系,是构建正确API请求的关键。代码中通过以下方式加载并构建字典:
import json# 加载股票列表映射文件stock_dic = { data["code"]: data["orgId"] for data in json.load(open("stock_list.json", "r", encoding="utf-8"))["stockList"]}
执行后,stock_dic将形成如 {“300059”: “9900005334”, …}的映射,确保后续请求能准确定位到目标公司。3. 采集范围配置
用户可通过修改以下变量,自定义采集任务:
# 设置采集年份范围year_range = list(range(2019, 2025)) # 采集2019至2024年数据# 设置目标股票代码(示例为10只创业板股票)demo_stock_codes = ["300059", # 东方财富"300033", # 同花顺"300750", # 宁德时代"300124", # 汇川技术"300015", # 爱尔眼科"300142", # 沃森生物"300122", # 智飞生物"300059", # 东方财富"300498", # 温氏股份"300413", # 芒果超媒]
4. 核心函数 get_file(节选)
此函数负责向巨潮资讯网API发送结构化请求,并解析返回的JSON数据。
defget_file(year, stock_str, page_num=1):""" 获取指定年份、股票的公告列表 :param year: 年份 :param stock_str: 股票代码与机构ID拼接字符串,如 "300059,9900005334" :param page_num: 页码 :return: 公告列表JSON数据 """# 构建API请求参数 data = {'pageNum': str(page_num),'pageSize': '30','column': 'szse','tabName': 'fulltext','plate': 'sz','stock': stock_str,'searchkey': '','secid': '','category': 'category_ndbg_szsh','trade': '','seDate': f'{year}-01-01~{year}-12-31', }# 发送POST请求并返回结果# ... (详细请求代码见完整文件)
【04|执行与输出】
运行主程序后,工具将按配置自动执行,并生成以下结构化的本地文件:
文件命名包含股票代码、公司简称、公告日期及标题,便于后续追溯与管理。【05|重要说明与合规使用】
- • 学术用途:本工具仅供个人学习与学术研究使用,严禁用于任何商业用途。
- • 合规访问:使用时应严格遵守巨潮资讯网的robots.txt协议及相关规定,内置的请求间隔(延时)即是为了尊重网站服务器压力。
- • 技术时效性:网络爬虫高度依赖目标网站结构,若巨潮资讯网更新其前端或API,部分解析规则可能需要相应调整。
【06|结语】
本工具旨在解决金融实证研究中的数据获取痛点,通过自动化方案提升研究效率。研究者获得洁净的文本数据后,可进一步结合自然语言处理、文本挖掘等方法,深入探究定向增发的市场反应、信息披露质量等学术问题。
欢迎在评论区交流技术细节或研究应用设想。
代码领取方式
转发本推文到朋友圈
添加客服
发送代码编号
发送保留2小时并集齐10个点赞的截图
即可免费领取代码