自动抓取化工品(硫磺、硫酸)及农副大宗商品(大豆、玉米、小麦、棉花、白糖、豆粕)的现货价格与国内外期货行情,生成可视化报告页面,支持页面内配置定时任务。
price-hub/ ├── README.md # 本文件 ├── requirements.txt # Python 依赖 ├── docs/ │ └── architecture.md # 架构文档(含数据流图) ├── src/ │ ├── scrapers/ │ │ ├── base.py # 基础 HTTP 工具 │ │ ├── chemicals.py # 化工品抓取(硫磺、硫酸) │ │ ├── agriculture.py # 农副品抓取(大豆、玉米、小麦等) │ │ └── futures.py # 期货行情抓取(国内+国际) │ ├── update_prices.py # 主更新脚本 │ └── server.py # Web 服务 + 定时任务引擎 ├── data/ # 运行时数据(自动生成) │ ├── spot_prices.json # 现货历史 │ ├── futures_prices.json # 期货历史 │ ├── scheduler_config.json # 定时任务配置 │ └── update.log # 运行日志 └── web/ └── index.html # 前端报告页面(单文件)
pip install -r requirements.txt
python src/update_prices.py
python src/server.py
浏览器访问 http://localhost:8080 即可查看报告。
| 类型 | 数据源 | 说明 |
|---|---|---|
| 化工现货 | 生意社 / 百川盈孚 | 优先生意社,回退百川盈孚 |
| 农副现货 | 生意社 / 百川盈孚 | 同上 |
| 国内期货 | 新浪财经期货接口 | 大商所 / 郑商所主力合约 |
| 国际期货 | 新浪财经外盘接口 | CBOT / ICE 行情 |
在页面底部「定时任务」区域,可直接:
| 表达式 | 含义 |
|---|---|
0 9 * * * | 每天 9:00 |
0 9,18 * * * | 每天 9:00 和 18:00 |
0 9 * * 1-5 | 工作日 9:00 |
*/30 9-17 * * 1-5 | 工作日 9:00-17:00 每30分钟 |
如果只需要定时抓取数据,可使用系统 crontab:
# 编辑 crontab
crontab -e
# 每天 9:00 执行(请替换路径)
0 9 * * * /usr/bin/python3 /path/to/price-hub/src/update_prices.py >> /path/to/price-hub/data/update.log 2>&1
FROM python:3.12-slim WORKDIR /app COPY . . RUN pip install --no-cache-dir -r requirements.txt # 首次抓取 RUN python src/update_prices.py || true EXPOSE 8080 CMD ["python", "src/server.py"]
git clone https://cnb.cool/table-link/public/price-hub.git
cd price-hub
pip install -r requirements.txt
python src/update_prices.py # 首次抓取
nohup python src/server.py & # 后台运行
建议配合 systemd 或 supervisor 管理进程。
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/scheduler | 获取定时任务列表 |
| PUT | /api/scheduler/job | 新增/更新任务 |
| DELETE | /api/scheduler/job/<id> | 删除任务 |
| POST | /api/run | 手动触发更新 |
| GET | /api/logs | 获取运行日志 |
| GET | /api/data/spot | 获取现货历史 JSON |
| GET | /api/data/futures | 获取期货历史 JSON |
MIT License