Skip to content

mosesyyoung/CnInfoReports

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CnInfoReports - 巨潮资讯网公告下载工具

一个用于从巨潮资讯网(cninfo.com.cn)批量下载上市公司公告的Python工具,支持深交所、上交所、北交所、港股等多个市场的公告查询和PDF文件下载。

功能特点

  • 🔍 多市场支持:支持深交所(szse)、港股(hke)、第三方(third)、基金(fund)、债券(bond)
  • 📊 公告分类查询:年报、半年报、季报等各类公告分类筛选
  • 📅 时间范围筛选:支持自定义起止时间范围查询
  • 🚀 多线程下载:支持并发下载,提高下载效率
  • 📁 自动分类存储:按股票代码自动创建目录分类存储
  • 🔄 股票数据自动更新:可定期更新股票代码数据库

环境要求

  • Python 3.7+
  • 依赖库:
    • httpx - HTTP客户端库

安装

  1. 克隆或下载项目文件
  2. 安装依赖:
pip install httpx

快速开始

基本用法

from CnInfoReports import CnInfoReports

# 初始化(跳过股票数据更新,使用本地stocks.json)
reports = CnInfoReports(skip_download_stock_json=True)

# 设置查询条件
filter_config = {
    'market': 'szse',           # 市场:szse(深交所)、hke(港股)、third(第三方)、fund(基金)、bond(债券)
    'tabName': 'fulltext',      # 公告类型:fulltext(全文)、brief(摘要)
    'plate': [],                # 板块(留空表示全部)
    'category': [               # 公告分类
        'category_ndbg_szsh',   # 年报
        'category_bndbg_szsh',  # 半年报
        'category_sjdbg_szsh',  # 季报
        'category_yjdbg_szsh'   # 预告
    ],
    'industry': [],             # 行业(留空表示全部)
    'stock': ['000001', '000002'],  # 股票代码列表
    'searchkey': '',            # 标题关键字(可选)
    'seDate': '2022-01-01~2023-12-31'  # 时间范围:开始日期~结束日期
}

# 查询公告信息(不下载PDF)
announcements = reports.query_announcements_info(filter_config, download_pdf=False)
print(f"查询到 {len(announcements)} 条公告")

# 查询并下载PDF文件
reports.query_announcements_info(filter_config, download_pdf=True)

更新股票数据

# 更新股票代码数据库(耗时较长,建议偶尔更新)
reports = CnInfoReports(skip_download_stock_json=False)

配置参数详解

市场类型 (market)

  • szse - 深交所(深圳证券交易所)
  • hke - 港股(香港交易所)
  • third - 第三方(北交所等)
  • fund - 基金
  • bond - 债券

公告分类 (category)

深交所/上交所常用分类:

  • category_ndbg_szsh - 年度报告
  • category_bndbg_szsh - 半年度报告
  • category_sjdbg_szsh - 季度报告
  • category_yjdbg_szsh - 业绩预告
  • category_qtgg_szsh - 其他公告

示例用法

1. 下载指定股票的年报

filter_config = {
    'market': 'szse',
    'tabName': 'fulltext',
    'plate': [],
    'category': ['category_ndbg_szsh'],  # 只下载年报
    'industry': [],
    'stock': ['000001', '000002'],       # 平安银行、万科A
    'searchkey': '',
    'seDate': '2022-01-01~2023-12-31'
}

reports = CnInfoReports()
reports.query_announcements_info(filter_config, download_pdf=True)

2. 下载所有股票的季报(批量下载)

filter_config = {
    'market': 'szse',
    'tabName': 'fulltext',
    'plate': [],
    'category': ['category_sjdbg_szsh'],  # 季报
    'industry': [],
    'stock': [],                          # 留空表示所有股票
    'searchkey': '',
    'seDate': '2023-01-01~2023-12-31'
}

reports = CnInfoReports(max_threads=10)  # 增加线程数提高下载速度
reports.query_announcements_info(filter_config, download_pdf=True)

3. 搜索包含特定关键词的公告

filter_config = {
    'market': 'szse',
    'tabName': 'fulltext',
    'plate': [],
    'category': ['category_ndbg_szsh'],
    'industry': [],
    'stock': ['000001'],
    'searchkey': '社会责任',  # 搜索包含"社会责任"的公告
    'seDate': '2022-01-01~2023-12-31'
}

reports = CnInfoReports()
announcements = reports.query_announcements_info(filter_config, download_pdf=True)

4. 下载港股公告

filter_config = {
    'market': 'hke',          # 港股市场
    'tabName': 'fulltext',
    'plate': [],
    'category': [],           # 港股目前不支持分类筛选
    'industry': [],
    'stock': ['00700', '00941'],  # 腾讯、中国银行
    'searchkey': '',
    'seDate': '2022-01-01~2023-12-31'
}

reports = CnInfoReports()
reports.query_announcements_info(filter_config, download_pdf=True)

文件结构

下载的文件会按以下结构自动组织:

data/
├── 000001_平安银行/
│   ├── 000001_平安银行_平安银行股份有限公司2022年年度报告_1234567890.pdf
│   └── 000001_平安银行_平安银行股份有限公司2022年半年度报告_1234567891.pdf
├── 000002_万科A/
│   └── 000002_万科A_万科企业股份有限公司2022年年度报告_1234567892.pdf
└── ...

性能优化建议

  1. 调整线程数:根据网络状况调整 max_threads 参数(默认5)
  2. 批量操作:一次查询多个股票比多次单个查询效率更高
  3. 时间范围:合理设置时间范围,避免一次性下载过多文件
  4. 股票数据更新:股票代码数据不需要频繁更新,建议每周更新一次

常见问题

Q: 提示"证券代码无效"怎么办?

A: 可能原因:

  1. 股票代码格式错误(深交所6位数字,港股5位数字)
  2. 股票已退市或代码变更
  3. stocks.json数据过期,可尝试更新:CnInfoReports(skip_download_stock_json=False)

Q: 下载速度慢怎么办?

A: 可以尝试:

  1. 增加 max_threads 参数值
  2. 检查网络连接
  3. 减少单次查询的股票数量

Q: 某些文件下载失败怎么办?

A: 程序会自动跳过已存在的文件,如果需要重新下载:

  1. 删除对应的PDF文件
  2. 清空data目录重新下载

Q: 如何查询所有可用的公告分类?

A: 可以访问巨潮资讯网官网查看完整的公告分类体系,或参考程序中的常用分类。

注意事项

  1. 遵守网站规则:请合理使用,避免过于频繁的请求
  2. 数据仅供参考:下载的公告数据仅供参考,请以官方信息为准
  3. 存储空间:PDF文件可能占用较大存储空间,请确保有足够的磁盘空间
  4. 网络环境:程序需要稳定的网络连接,建议在网络状况良好时使用

更新日志

  • v1.0.0: 初始版本,支持基本查询和下载功能
  • 修复多线程创建目录的并发问题
  • 优化文件命名和存储结构
  • 完善文档和使用说明

鸣谢

感谢 xfeng2020/cninf_reports 项目的启发和参考。

许可证

本项目仅供学习和研究使用,请遵守相关法律法规和网站使用条款。

About

巨潮资讯网公告下载

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 100.0%