64000件饰品四平台比价:如何在本地部署SteamTradingSiteTracker挂刀行情管道
【免费下载链接】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
SteamTradingSiteTracker 是一个 Steam 挂刀行情站背后的开源数据管道:它自动抓取 BUFF、IGXE、C5、UUYP 上 CS:GO 与 DOTA2 饰品的挂单数据,并与 Steam 市场买卖单对比,算出各平台的挂刀比例。
出售一件 DOTA2 饰品前,你需要知道:BUFF 挂单最低卖价是多少、Steam 市场最高求购价是否高于第三方挂价。手动比价要翻四个平台页面逐个筛选,价格还在变动。这个仓库就是行情站背后的管道,本地跑起来后,你就有一份可多平台对比的行情数据库。
项目是什么:行情站背后的开源管道
它覆盖 CS:GO 与 DOTA2 约 64000 件饰品,重点饰品约每 10 分钟更新一次。核心能力:
| 能力 | 说明 |
|---|---|
| 跨平台ID映射 | 解析同一件饰品在 Steam Market、BUFF、IGXE、C5、UUYP 的 ID,存入meta集合 |
| 并发抓取行情 | 4 个 worker 进程异步抓取各平台卖单与 Steam 市场买卖单 |
| 比例计算 | 输出各平台 optimal/safe 买入、卖出与交易比例,并换算 Steam 手续费(5%+10%) |
| 优先级调度 | 按计算出的 weighted_ratio 分配更新任务,比例越低更新越频繁 |
工作原理:四个进程如何传递数据
代码全部在 scripts/ 下,由 4 个进程加 2 个工具模块组成,数据流如下:
- scripts/start_meta_crawler.py 元数据爬虫:从 BUFF 翻页拉取饰品列表,解析每件饰品在 Steam Market、IGXE、C5、UUYP 的 ID,写入
meta集合,并清理 14 天未见的新旧数据。 - scripts/start_task_mapper.py 任务调度:同步 meta 与 data 集合,按 weighted_ratio 为饰品生成更新任务,写入 Redis 任务池。
- scripts/start_data_fetcher.py 数据抓取:起 4 个 worker 进程,通过代理异步请求各平台卖单与 Steam 市场成交量、订单接口。
- scripts/start_result_collector.py 结果收集:任务完成后计算各平台 optimal/safe 价格与挂刀比例,把结果和新的 weighted_ratio 写回
data集合。
scripts/database.py 定义 MongoDB 与 Redis 连接,端口是占位符需要自己填写;scripts/url_formats.py 汇总了各平台接口 URL 模板;三个平台的 Cookie 放在 scripts/secrets/ 下(buff 需含session字段、c5 需含C5Login、uuyp 需含Bearer,启动代码会断言校验)。
快速上手:本地部署步骤
环境要求:
- Python 3,依赖 requests、beautifulsoup4、aiohttp、loguru、retrying、pymongo、redis、numpy
- MongoDB
- 带 JSON 模块的 Redis(TaskList 使用
redis.json()接口,普通 Redis 不够) - 一组可用 HTTP 代理,以及三个平台的登录 Cookie
git clone https://gitcode.com/GitHub_Trending/st/SteamTradingSiteTracker cd SteamTradingSiteTracker pip install requests beautifulsoup4 aiohttp loguru retrying pymongo redis numpy python scripts/start_meta_crawler.py python scripts/start_task_mapper.py等前两个进程跑起来后,再分终端启动start_data_fetcher.py与start_result_collector.py。启动前记得先填好scripts/database.py的端口,并在scripts/utils.py的load_proxies中返回你的代理列表。
验证是否跑通:收集器日志会持续输出Update item ...;也可以在 MongoDB 的steam库中直接查询:
db.data.find().sort({updated_at: -1}).limit(1)返回文档的updated_at是最近时间戳、且带有*_buy_ratio等比例字段,即整条管道已打通。
实用建议:代理、更新频率与数据校验
代理是最大变量。scripts/utils.py的load_proxies目前是assert 0,需要你自行实现;抓取器单请求超时 12 秒,失败 80 次后该饰品会被移出队列。Steam Market 的订单接口限流最严,任务调度刻意把order任务排在每件饰品任务列表末尾,这一步持续失败会导致比例算不出来。
用 weighted_ratio 调节更新频率。任务调度把饰品按weighted_ratio升序切成三段(0–0.1 / 0.1–0.3 / 0.3–1.0),每段取updated_at最旧的 600 件生成任务;抓取失败或低流动性的饰品会被写入weighted_ratio=100,自然排到队尾。想让某件饰品更新更快,可直接调低它的weighted_ratio。
靠告警日志判断平台解析是否正常。24 小时成交量超过 10 的饰品若取到空卖单列表,收集器会输出Find item ... with empty order list。这条日志变多,通常说明某个平台接口结构变了,应检查 scripts/start_result_collector.py 中对应的解析代码。
本仓库是数据管道部分,Web 前端与微信小程序在独立项目维护。想自建行情库的话,下一步就是填好scripts/database.py的端口、实现scripts/utils.py的代理逻辑,按上面的顺序启动四个进程;日志出现Update item后,就可以从data集合开始读行情数据了。
【免费下载链接】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),仅供参考