如何采集 Steam 挂刀比例与饰品行情数据
【免费下载链接】SteamTradingSiteTrackerSteam 挂刀行情站 —— 24小时更新的 BUFF & IGXE & C5 & UUYP & ECO 挂刀比例数据 | Track cheap Steam Community Market items on buff.163.com, igxe.cn, c5game.com, youpin898.com and ecosteam.cn.项目地址: https://gitcode.com/GitHub_Trending/st/SteamTradingSiteTracker
Steam 挂刀行情站(SteamTradingSiteTracker)是一个持续追踪 BUFF、IGXE、C5、UUYP 四个交易平台 CSGO 与 DOTA2 饰品行情的开源项目。它定时抓取各平台的最新挂单与 Steam 市场的 24 小时成交量,计算每个饰品的挂刀比例,结果写入 MongoDB 与 Redis,供 Web 界面和微信小程序查询。
项目适合想自建一套行情数据链路的个人开发者或团队:更新节奏、存储位置都可以自己控制,不依赖官方站点。本文只讲部署所需的最小配置、各脚本的分工,以及常见问题怎么排查。
采集范围与核心指标一览
- 采集对象:BUFF 上的全部 CSGO、DOTA2 饰品(官方站点约 64000 个)
- 采集数据:Steam 市场 24 小时成交量与买卖单分布,BUFF / IGXE / C5 / UUYP 的最新卖出挂单
- 核心指标:每个平台各饰品的挂刀比例,含买入、卖出、近期成交三种口径,分最优价与稳定价
- 存储:MongoDB 的 meta、data 两个集合;Redis 存任务队列(使用 JSON 模块)
- 查看方式:官方 Web 界面与微信小程序(小程序在单独仓库);自建部署则数据落自己的库
- 预警:站点端支持按价格阈值提醒,展示与提醒逻辑不在本仓库内
📦 3 步完成最小配置与部署
环境要求:本机 Python 3、MongoDB、Redis(Redis 需启用 JSON 模块)。仓库没有依赖清单文件,按各脚本的 import 安装:requests、aiohttp、beautifulsoup4、numpy、loguru、retrying、pymongo、redis。
git clone https://gitcode.com/GitHub_Trending/st/SteamTradingSiteTracker cd SteamTradingSiteTracker配置共三处:
- 数据库端口:把 scripts/database.py 顶部的 MONGODB_PORT、REDIS_PORT 填成实际端口,两个服务均默认连 localhost。
- 平台 Cookie:在 scripts/secrets/ 下放三个 txt 文件,buff_cookie.txt 需含 session、c5_cookie.txt 需含 C5Login、uuyp_cookie.txt 需含 Bearer,元数据爬虫启动时会断言校验。
- 代理池:价格采集的所有请求都走代理,需要在 scripts/utils.py 中实现 load_proxies(),当前函数体是 assert 0,必须自行填写。
四平台的接口地址集中在 scripts/url_formats.py,新增平台按同样格式加一行即可。配置完成后,用四个终端分别启动脚本(价格采集器启动时会清空 Redis 任务队列并等待调度器入队,所以放在调度器之后):
python scripts/start_meta_crawler.py python scripts/start_task_mapper.py python scripts/start_data_fetcher.py python scripts/start_result_collector.py数据从采集到展示的完整链路
数据链路按顺序由四个脚本完成。start_meta_crawler.py 周期遍历 BUFF 商品列表,过滤低价低成交量饰品后,逐个查出它在 Steam Market 与另外三平台的 ID,写入 meta 集合;start_task_mapper.py 每 20 秒对比 meta 与 data 集合,当任务数低于 800 时按 weighted_ratio 排序补入新任务,每个任务依次执行 volume、buff、igxe、c5、uuyp、order 六步抓取;start_data_fetcher.py 起 4 个进程并发取数,单次成功写回 Redis,连续失败 80 次后把任务标记为过期;start_result_collector.py 在任务完成后计算各平台挂单价格与买入、卖出、成交三类挂刀比例,写入 data 集合,并按加权比例重新决定该饰品的下次更新优先级。
上游数据源是 Steam Market 与四平台接口,下游是官方 Web 界面(Django)和微信小程序,读取 data 集合中的价格、比例与更新时间字段。自建部署时,展示端可以自己搭,数据库结构与官方保持一致。
行情界面展示了哪些数据与走势
主界面以表格列出每个饰品:名称、所属游戏、24 小时成交量、平台挂单价、最优与稳定挂刀比例、最优挂单平台、各平台最新买卖价、Steam Market 入口与更新时间;表头支持按平台、游戏、挂刀比例、收益率阈值、成交量筛选,并按列排序。
表格中还显示"近期成交"比例,即按 Steam 市场 24 小时成交价中位数卖出时的挂刀比例,README 中有更新说明。挂刀指数走势图支持 30 / 180 / 365 日区间,每条曲线对应一个收益率阈值,用于观察挂刀比例的整体水平随时间的变化。站点端还提供价格阈值到点提醒的设置入口,仓库内仅包含数据采集部分。
🔍 数据不更新时怎么排查
| 现象 | 原因 | 处理 |
|---|---|---|
| 元数据爬虫启动即 AssertionError | secrets 下 Cookie 文件缺失或不含必需字段(session / C5Login / Bearer) | 重新获取对应平台 Cookie 写入 txt 后重启 |
| 部分饰品价格长时间不更新 | 采集请求超时,同一任务连续失败 80 次后被标记过期(日志有 Complete stale task) | 检查 load_proxies 返回的代理是否可用,代理质量是常见瓶颈 |
| 资源占用偏高 | 价格采集器默认启动 4 个并发进程 | 调小 start_data_fetcher.py 顶部的 N_PROCESSES |
适合谁自建,下一步看哪里
如果只是查行情,官方站点和小程序已经够用;这个仓库更适合想复用采集链路、或自建监控与预警服务的人。接下来可以先读 README.md 中关于数据集与饰品 ID 映射表的说明,再按四个 start_* 脚本的顺序过一遍 scripts/ 目录,采集、调度、比例计算的实现都在里面。
【免费下载链接】SteamTradingSiteTrackerSteam 挂刀行情站 —— 24小时更新的 BUFF & IGXE & C5 & UUYP & ECO 挂刀比例数据 | Track cheap Steam Community Market items on buff.163.com, igxe.cn, c5game.com, youpin898.com and ecosteam.cn.项目地址: https://gitcode.com/GitHub_Trending/st/SteamTradingSiteTracker
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考