# fetchGDData **Repository Path**: dongweiq/fetch-gddata ## Basic Information - **Project Name**: fetchGDData - **Description**: 抓取广西电力的数据工具 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-18 - **Last Updated**: 2026-03-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 广西电力数据采集工具 从广西电力交易平台(`pm.gx.csg.cn`)批量采集公开披露数据,提供 Web 可视化界面,支持定时自动采集和数据导出。 ## 项目结构 ``` fetchGDData/ ├── app.py # Flask Web 服务(入口) ├── fetcher.py # 数据抓取核心模块 ├── config.py # API端点和数据源配置(54个接口) ├── requirements.txt # Python依赖 ├── templates/ │ └── index.html # Web 前端页面 ├── output/ # 导出数据存放目录 └── data/ # 原始XHR抓包数据(参考用) ``` ## 环境要求 - Python 3.10+ - macOS / Windows / Linux - 需要能访问 `pm.gx.csg.cn`(可能需要公司VPN) ## 安装与运行 ```bash # 1. 进入项目目录 cd fetchGDData # 2. 安装依赖 pip3 install -r requirements.txt # 3. 启动服务 python3 app.py ``` 启动后终端会输出: ``` 启动中... 打开浏览器访问 http://127.0.0.1:5100 ``` 打开浏览器访问 **http://127.0.0.1:5100** 即可看到操作界面。 ## 使用说明 ### 第一步:获取认证信息(Cookie) > **这一步最关键**,Cookie 不对的话大部分接口会返回"请登录后查看"。 1. 用浏览器打开广西电力交易平台并**登录** 2. 按 `F12` 打开开发者工具,切换到 **Network** 标签 3. 随便点击页面上的功能,在左侧列表中找到任意一条请求 4. 点击该请求,在右侧找到 **Request Headers** 5. 找到 `Cookie:` 那一行,**右键 → 复制值(Copy Value)** 6. 粘贴到工具的 **Cookie 输入框**中 7. 点击 **"测试连接"** 验证是否有效 **注意事项:** - 必须复制**完整的 Cookie 值**,不能只填 `insert_cookie=39316774`,那只是一个追踪标记,不是登录凭证 - 完整 Cookie 通常很长(几百个字符),包含多个用分号分隔的字段,例如: ``` insert_cookie=39316774; JSESSIONID=ABC123DEF456; SESSION=xyz789abc; ... ``` - Cookie 有时效性,过期后需要重新登录并复制新的 - 测试连接会同时验证网络连通性和登录认证,只有都通过才会提示"连接成功" **备选方案 —— Token 认证:** 如果 Cookie 方式不好用,也可以尝试 Token: 1. 在浏览器开发者工具的 Request Headers 中找 `Authorization` 字段 2. 复制其值(通常是 `Bearer eyJhbGciOi...` 格式) 3. 粘贴到工具的 **Token 输入框**中 Cookie 和 Token 可以同时填写,也可以只填其中一个。 ### 第二步:选择数据源 工具内置了 **11 个分类、56 个数据接口**,覆盖平台全部公开披露信息: | 分类 | 接口数 | 包含数据 | |------|--------|----------| | 电力用户 | 4 | 基本信息、用电信息、变动列表、用电侧日前结果数据(日前) | | 发电企业 | 2 | 基本信息、机组检修及设备改造计划 | | 电力交易机构 | 5 | 交易总体情况(年/月/期间)、现货交易-发电侧实时/日前 | | 调度-负荷预测 | 5 | 系统负荷预测(周/日/月)、电网负荷总体情况、实际负荷 | | 调度-供需平衡 | 2 | 电力供需平衡(日)、电力电量供需平衡(月) | | 调度-发电出力 | 9 | 机组状态、各类出力预测(日/周/月)、水电/新能源出力等 | | 调度-检修计划 | 9 | 发电/电力设备检修计划(年/月/日)、中调管辖设备检修等 | | 调度-设备投产退役 | 6 | 220kV设备/线路/变压器投产计划、退役机组等 | | 调度-输电线路 | 7 | 重要通道线路、输电断面、线路潮流/变压器出力等 | | 调度-其他 | 6 | 系统备用、基准发电计划、报价统计等 | | 调度-日用电数据 | 2 | 每日日用电数据、日分时市场电量查询 | 先选 **分类**,再选 **数据**,两个下拉框是联动的。 ### 第三步:设置查询参数 | 参数 | 说明 | 示例 | |------|------|------| | 年份 | 筛选年度 | `2026` | | 月份 | 筛选月份 | `03` | | 日期 | 筛选日期 | `13` | | 周 | 筛选周数 | `10` | **全部留空 = 不筛选,拉取全量数据。** ### 用电侧日前结果数据(日前)的日期查询说明 此接口支持多天查询: - **只填日期**(如 `2026-03-25`)→ 查询单日数据 - **只填年月**(如 `2026-03`)→ 自动查询整月每天的数据,合并到一个 Excel - **只填年份**(如 `2026`)→ 自动查询全年每天的数据,合并到一个 Excel 导出 Excel 格式示例: | 交易单元ID | 交易单元名称 | 用户ID | 用户名称 | 日期 | 00:00 | 01:00 | ... | 23:00 | |------------|--------------|--------|----------|------|-------|-------|-----|-------| | SD0006 | 新奥(广西)能源销售有限公司 | SD0006 | 新奥(广西)能源销售有限公司 | 2026-03-25 | 199.657 | 196.560 | ... | 206.692 | - 日期列格式为 `yyyy-MM-dd` - 只导出「电量」数据(不包含「电价」) - 多天查询时,每两天请求之间会按「请求间隔」参数等待 ### 第四步:设置采集参数 | 参数 | 默认值 | 说明 | |------|--------|------| | 每页条数 | 100 | 单次请求获取的数据量,最大500 | | 最大页数 | 0 | 限制最多采集多少页,0 = 不限(采完为止) | | 请求间隔 | 0.5秒 | 两次请求之间的等待时间,避免请求过快 | | 导出格式 | Excel | 可选 Excel (.xlsx) 或 CSV (.csv) | ### 第五步:开始采集 点击 **"开始采集"** 按钮,底部日志区域会实时显示进度: ``` [2026-03-13 14:30:00] 开始采集: 电力用户 - 基本信息 [2026-03-13 14:30:00] 总记录数: 27201, 预计采集: 273页 [2026-03-13 14:30:01] 第1/273页完成, 本页100条, 累计100条 [2026-03-13 14:30:01] 第2/273页完成, 本页100条, 累计200条 ... [2026-03-13 14:35:20] 采集完成! 共27201条数据 [2026-03-13 14:35:21] 数据已自动导出: 电力用户_基本信息_20260313_143520.xlsx ``` - 采集完成后数据**自动导出**到 `output/` 目录 - 也可以点击 **"下载数据"** 按钮直接通过浏览器下载最新导出的文件 ### 一键采集全部 点击 **"一键采集全部"** 按钮,工具会自动遍历全部 **56 个接口**,逐个采集数据并分别导出文件。 ``` [2026-03-13 16:00:00] ===== 开始批量采集全部 56 个接口 ===== [2026-03-13 16:00:00] --- [1/55] 电力用户 - 基本信息 --- [2026-03-13 16:00:00] 开始采集: 电力用户 - 基本信息 ... [2026-03-13 16:00:15] 数据已自动导出: 电力用户_基本信息_20260313_160015.xlsx [2026-03-13 16:00:15] --- [2/55] 电力用户 - 用电信息 --- ... [2026-03-13 16:30:00] ===== 批量采集完成! 总计55个接口, 成功49个, 失败6个, 导出49个文件 ===== ``` - 底部状态栏实时显示进度:`批量采集中 [3/55] 调度-负荷预测 - 实际负荷 | 成功: 2 失败: 0` - 每个接口的数据**单独导出**一个文件到 `output/` 目录 - 查询参数(年/月/日/周)和采集参数(每页条数、最大页数、间隔、格式)对全部接口生效 - 随时点击 **"停止"** 可中断批量采集 ### 定时采集(可选) 勾选 **"定时采集"** 并设置间隔分钟数,采集完成后会自动倒计时,到时间后重新开始采集。适合需要定期拉取最新数据的场景。 点击 **"停止"** 可以同时中断当前采集和取消定时任务。 ## 导出格式 - **Excel**(`.xlsx`)—— 默认格式,可直接用 Excel / WPS 打开 - **CSV**(`.csv`)—— 通用格式,编码为 UTF-8-BOM,Excel 打开不会乱码 文件名规则:`{分类}_{数据名}_{时间戳}.xlsx` 导出文件保存在项目下的 `output/` 目录中。 ## 常见问题 **Q: 提示"请登录后查看"?** 说明 Cookie 不完整或已过期。请重新登录平台,按照上面的步骤复制**完整的 Cookie**(不能只填 `insert_cookie=...`)。 **Q: 测试连接显示"网络连通但认证失败"?** 网络没问题,但 Cookie/Token 无效。重新登录网站,复制新的完整 Cookie。 **Q: "电力用户-基本信息"能采集,但其他接口失败?** "基本信息"属于不需要认证的公开接口。其他大部分接口(find-public)需要完整的登录 Cookie 才能访问。 **Q: 采集到一半报错停了?** 可能是 Cookie 过期或网络波动。更新 Cookie 后重新采集即可,已导出的数据不受影响。 **Q: 数据量太大,采集很慢?** 可以设置 **最大页数** 先采集部分数据,或者增大 **每页条数**(如 200、500)减少请求次数。 **Q: 怎么知道 Cookie 过没过期?** 点 **"测试连接"** 按钮,会同时验证网络和认证,通过才提示成功。 **Q: 端口被占用了?** 编辑 `app.py` 最后一行,把 `port=5100` 改成其他端口号即可。 **Q: 可以远程访问吗?** 把 `app.py` 最后一行的 `host="127.0.0.1"` 改为 `host="0.0.0.0"`,然后通过 `http://你的IP:5100` 访问。注意防火墙放行端口。 **Q: "一键采集全部"和"开始采集"有什么区别?** "开始采集"只采集当前选中的单个接口;"一键采集全部"会自动遍历全部 56 个接口,逐个采集并分别导出文件,无需手动切换数据源。