Skip to main content

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 <股票代码>

程序会按这个顺序运行:

  1. 读取 config.yaml
  2. 检查本地缓存是否仍在有效期内
  3. 如果缓存有效,直接复用 <股票代码>.json
  4. 如果缓存失效或不存在,从东方财富重新抓取
  5. 将 JSON 内容发送给 OpenAI
  6. 要求模型只能从 boards[].BOARD_NAME 中挑选 3 个核心概念
  7. 在控制台打印结果

项目结构

.
├── 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 缓存有效期,默认 7
  • openai.api_key OpenAI API Key
  • openai.base_url OpenAI 兼容接口地址
  • 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 中主要包含:

  • stock
  • content
  • boards
  • metadata

其中 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

eastmoney_concept_picker-0.1.0.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

eastmoney_concept_picker-0.1.0-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

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

Hashes for eastmoney_concept_picker-0.1.0.tar.gz
Algorithm Hash digest
SHA256 bbefe01c2e625738f0bb7e454e2e7ac5736093ce0cf374c89619e41b3532a860
MD5 09ef1517ffc515b2bd5acfa1358c564a
BLAKE2b-256 1ac3e072263147f7c8a2c8418e758003c3622563fb565c25aabcfba7fea10910

See more details on using hashes here.

File details

Details for the file eastmoney_concept_picker-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for eastmoney_concept_picker-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a19dad3799f8ea6aba15c97ca4f0283bec82d50d155f731cda907bd9218d994e
MD5 d78a57dbd9234a1d48fd634f38d0ae09
BLAKE2b-256 97ccc44af06ac15cf721b042b7054d3848974f65a4efeb0a561043be008dcfe5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page