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

Steam社区市场JSON接口URL适配全页面及突破count参数100上限问题咨询

解决Steam市场JSON接口的分页与请求限制问题

嘿,刚接触编程就尝试爬取Steam市场数据,这起步挺不错的!针对你遇到的两个问题,我给你拆解下解决方案:

为什么count设置超过100无法获取更多数据?

这是Steam官方接口的硬性限制——这个count参数的最大值就是100,后端会直接忽略超过100的数值,最多返回100条数据。不是你代码的问题,是平台为了控制服务器负载做的限制,咱们只能接受这个设定,换个方式来获取全量数据。

如何适配所有页面的请求?

核心思路就是分页请求,利用接口里的start参数来控制每次请求的起始位置:

  • 第一次请求:start=0&count=100,获取第1-100条数据
  • 第二次请求:start=100&count=100,获取第101-200条数据
  • 第三次请求:start=200&count=100,以此类推
  • 直到某次请求返回的results数组长度小于100,或者为空,就说明已经获取完所有数据了

新手友好的Python示例代码

我给你写个简单的代码框架,你可以照着改:

import requests
import time

# 基础URL,把固定参数先写好
base_url = "https://steamcommunity.com/market/search/render/?query=&search_descriptions=0&appid=730&norender=1"

start = 0
count = 100
all_items = []

while True:
    # 拼接每次请求的URL
    request_url = f"{base_url}&start={start}&count={count}"
    # 加个User-Agent,模拟浏览器请求,避免被拦截
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
    }
    
    try:
        response = requests.get(request_url, headers=headers)
        response.raise_for_status()  # 如果请求出错,抛出异常
        data = response.json()
        items = data.get("results", [])
        
        if not items:
            # 没有数据了,退出循环
            break
        
        all_items.extend(items)
        print(f"已获取 {len(all_items)} 条数据")
        
        # 更新下一次的起始位置
        start += count
        # 加个延迟,避免请求太频繁被封禁
        time.sleep(1)
        
    except Exception as e:
        print(f"请求出错:{e}")
        break

print(f"全部数据获取完成,共 {len(all_items)} 条")

额外提醒(新手必看)

  • 一定要加请求延迟:Steam对请求频率很敏感,太快会再次被封禁,time.sleep(1)至少保证每秒1次请求,最好可以调到2-3秒更安全
  • 带上User-Agent:很多接口会拒绝没有浏览器标识的请求,上面代码里已经加了,你也可以换成自己浏览器的UA
  • 不要一次性爬太多数据:如果数据量很大,建议分批次爬,比如爬几千条就暂停一会儿,避免触发反爬机制

内容的提问来源于stack exchange,提问作者Kryštof Bochníček

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 20:02:40