You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Steam API数据获取与格式转换:生成可入库CSV文件

处理Steam市场价格历史API数据的解决方案

1. 明确API返回格式

Steam市场价格历史接口的返回内容不是标准JSON,而是一段包含变量的JavaScript代码,核心有效数据存于line3变量的二维数组中,示例结构如下:

var line1 = [];
var line2 = [];
var line3 = [
    [1699152000, 3.5, 12],
    [1699238400, 3.6, 9],
    ...
];
var name = "目标物品名称";

其中line3的每个子数组对应一条记录:

  • 第一个元素:Unix时间戳(对应date列)
  • 第二个元素:物品单价(对应price列)
  • 第三个元素:成交数量(对应quantity列)

2. 提取并转换数据的具体步骤

步骤1:请求并提取核心数据

用requests获取响应后,通过正则匹配提取line3中的数组内容:

import requests
import re

# 替换为你的目标API地址和有效cookie
url = "https://steamcommunity.com/market/pricehistory/?appid=730&market_hash_name=你的物品名称"
cookies = {"steamLogin": "你的会话ID"}
response = requests.get(url, cookies=cookies)

# 正则匹配line3的数组部分
pattern = re.compile(r'var line3 = (\[.*?\]);', re.DOTALL)
match_result = pattern.search(response.text)
if not match_result:
    raise ValueError("未提取到有效价格数据,请检查会话ID或物品名称")

raw_data_str = match_result.group(1)

步骤2:转换为规范DataFrame并导出CSV

将提取到的字符串转为Python列表,再构造DataFrame并处理时间格式:

import ast
import pandas as pd

# 把字符串格式的数组转为Python列表
data_list = ast.literal_eval(raw_data_str)

# 构造DataFrame并命名列
df = pd.DataFrame(data_list, columns=['date', 'price', 'quantity'])

# 将Unix时间戳转换为可读日期格式
df['date'] = pd.to_datetime(df['date'], unit='s')

# 导出为CSV文件
df.to_csv('steam_price_history.csv', index=False)

3. 常见问题排查

  • 若正则匹配失败:检查响应内容是否有换行,确保re.DOTALL参数生效,允许正则匹配多行文本
  • 若ast.literal_eval报错:确认提取的字符串无多余JS语法(比如末尾的分号),保证是纯数组格式
  • 若返回空数据:检查steamLogin会话ID是否有效,或目标物品是否存在价格历史

内容的提问来源于stack exchange,提问作者oujiloc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 01:00:56