Fetch Eastmoney stock data and use OpenAI to pick core concept labels.
Project description
eastmoney-concept-picker
一个基于东方财富数据的 A 股概念筛选工具。
当前功能:
- 根据股票代码从东方财富抓取个股基础主题数据
- 将原始数据保存到本地 JSON 文件
- 支持基于本地缓存复用抓取结果
- 将 JSON 内容发送给 OpenAI
- 从
boards中筛选 3 个更核心的概念标签 - 自动压掉明显的上位概念,优先保留更具体的下位概念
工作流程
执行:
python main.py <股票代码>
程序会按这个顺序运行:
- 读取
config.yaml - 检查本地缓存是否仍在有效期内
- 如果缓存有效,直接复用
<股票代码>.json - 如果缓存失效或不存在,从东方财富重新抓取
- 将 JSON 内容发送给 OpenAI
- 要求模型只能从
boards[].BOARD_NAME中挑选 3 个核心概念 - 在控制台打印结果
项目结构
.
├── main.py
├── config.yaml.example
├── eastmoney_spider/
│ ├── fetcher.py
│ └── llm.py
├── tests/
└── docs/
配置
项目默认读取根目录下的 config.yaml。
建议先从示例文件复制:
copy config.yaml.example config.yaml
配置示例:
cache_days: 7
openai:
api_key: your-openai-api-key
base_url: https://api.openai.com/v1
model: gpt-4o-mini
proxy: http://127.0.0.1:7890
说明:
cache_days控制本地 JSON 缓存有效期,默认7openai.api_keyOpenAI API Keyopenai.base_urlOpenAI 兼容接口地址openai.model使用的模型名称openai.proxy可选配置,只对 OpenAI 请求生效,不影响东方财富抓取
使用方式
示例:
python main.py 600032
首次抓取时,终端类似输出:
已抓取并保存: 600032.json
股票: 600032 浙江新能
核心概念标签:
1. 光伏发电
原因: 公司主营业务包括光伏发电,符合该板块的定义。
2. 风能
原因: 公司涉及风力发电业务,属于风能板块。
3. 新能源
原因: 公司的业务方向包括可再生能源,符合新能源的定义。
命中缓存时,终端类似输出:
使用缓存: 600032.json
股票: 600032 浙江新能
核心概念标签:
1. 光伏发电
原因: 公司主营业务包括光伏发电,符合该板块的定义。
2. 风能
原因: 公司涉及风力发电业务,属于风能板块。
3. 新能源
原因: 公司的业务方向包括可再生能源,符合新能源的定义。
输出文件
程序会在当前目录生成:
<股票代码>.json
例如:
600032.json
当前 JSON 中主要包含:
stockcontentboardsmetadata
其中 metadata.fetched_at 用于缓存判断。
当前规则
为了减少概念冗余,程序会优先保留更具体的标签。
例如同一层级链中如果同时出现:
公用事业电力光伏发电
则会优先保留更具体的 光伏发电,避免把明显存在包含关系的上位概念和下位概念同时交给模型。
安装与环境
当前项目基于 Python 运行。
已验证命令示例:
python main.py 600032
如果本机 python 命令不可用,请使用你自己的 Python 可执行文件路径运行。
测试
运行测试:
python -m unittest discover -s tests -v
注意事项
config.yaml不应提交到仓库- 请只提交
config.yaml.example - 本地生成的 JSON 文件属于缓存结果,不建议提交
- OpenAI 返回结果仍然是模型判断,不构成投资建议
后续可扩展方向
- 进一步压制像
新能源这类更宽泛的大概念 - 输出更稳定的中文理由
- 支持批量股票分析
- 将分析结果保存为独立结果文件
- 增加更完整的 OpenAI 配置校验和异常处理
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file eastmoney_concept_picker-0.1.0.tar.gz.
File metadata
- Download URL: eastmoney_concept_picker-0.1.0.tar.gz
- Upload date:
- Size: 10.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bbefe01c2e625738f0bb7e454e2e7ac5736093ce0cf374c89619e41b3532a860
|
|
| MD5 |
09ef1517ffc515b2bd5acfa1358c564a
|
|
| BLAKE2b-256 |
1ac3e072263147f7c8a2c8418e758003c3622563fb565c25aabcfba7fea10910
|
File details
Details for the file eastmoney_concept_picker-0.1.0-py3-none-any.whl.
File metadata
- Download URL: eastmoney_concept_picker-0.1.0-py3-none-any.whl
- Upload date:
- Size: 8.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a19dad3799f8ea6aba15c97ca4f0283bec82d50d155f731cda907bd9218d994e
|
|
| MD5 |
d78a57dbd9234a1d48fd634f38d0ae09
|
|
| BLAKE2b-256 |
97ccc44af06ac15cf721b042b7054d3848974f65a4efeb0a561043be008dcfe5
|