ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

如何采集 Steam 挂刀比例与饰品行情数据

如何采集 Steam 挂刀比例与饰品行情数据

如何采集 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

配置共三处:

  1. 数据库端口:把 scripts/database.py 顶部的 MONGODB_PORT、REDIS_PORT 填成实际端口,两个服务均默认连 localhost。
  2. 平台 Cookie:在 scripts/secrets/ 下放三个 txt 文件,buff_cookie.txt 需含 session、c5_cookie.txt 需含 C5Login、uuyp_cookie.txt 需含 Bearer,元数据爬虫启动时会断言校验。
  3. 代理池:价格采集的所有请求都走代理,需要在 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 日区间,每条曲线对应一个收益率阈值,用于观察挂刀比例的整体水平随时间的变化。站点端还提供价格阈值到点提醒的设置入口,仓库内仅包含数据采集部分。

🔍 数据不更新时怎么排查

现象原因处理
元数据爬虫启动即 AssertionErrorsecrets 下 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),仅供参考

返回列表