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

Python循环Get请求调用Stubhub API:仅返回单活动数据问题排查

嘿,我来帮你排查下这个问题!你遇到循环后只返回单个活动结果的情况,大概率是数据收集逻辑没处理到位,或者循环里的API请求没正确绑定每个Event ID。下面是几个最常见的问题点和对应的解决办法:

1. 每次循环都覆盖了DataFrame,而非追加数据

这是最常见的坑:如果你在循环里直接写df = pd.DataFrame(当前活动数据),那么每一轮循环都会把之前的DataFrame完全覆盖,最后自然只剩最后一个活动的结果。

解决思路:先初始化一个空列表,每次循环把当前活动的库存数据追加到列表中,等所有循环结束后,再把整个列表转换成DataFrame。
示例代码:

# 初始化空列表来存储所有活动的库存数据
all_inventory = []
eventid_list = [1001, 1002, 1003]  # 你的活动ID列表

for event_id in eventid_list:
    # 替换成你的Stubhub API请求逻辑,注意用当前循环的event_id
    response = requests.get(
        f"https://api.stubhub.com/inventory/v1/events/{event_id}/listings",
        headers=你的请求头参数
    )
    inv_data = response.json()
    
    # 把当前活动的库存数据追加到列表(注意要匹配API返回的结构,比如取listings字段)
    if "listings" in inv_data:
        all_inventory.extend(inv_data["listings"])
    else:
        print(f"活动ID {event_id} 未返回有效库存数据")

# 循环结束后统一生成DataFrame
final_df = pd.DataFrame(all_inventory)
2. API请求的Event ID没有动态替换

检查你的Get请求URL,是不是不小心写死了某个固定的Event ID,而没有用循环变量event_id替换?比如如果URL是https://api.stubhub.com/.../events/1001/listings,那不管循环多少次,请求的都是同一个活动的数据。

解决思路:用f-string或者字符串拼接,把当前循环的Event ID动态插入到URL中,就像上面示例代码里的写法。

3. 未给库存数据绑定对应活动标识(可选但重要)

就算你收集了所有数据,如果没把每条库存记录和对应的Event ID绑定,后续可能会混淆不同活动的数据,甚至看起来像是只有一个活动的结果。建议在追加数据时给每条记录加上Event ID字段:

for event_id in eventid_list:
    # ... 省略API请求逻辑 ...
    if "listings" in inv_data:
        # 给每条库存记录添加所属活动的ID
        for listing in inv_data["listings"]:
            listing["event_id"] = event_id
            all_inventory.append(listing)
4. 循环中途因请求异常中断

如果某个Event ID的API请求失败(比如返回404、500错误),且你没有做异常捕获,循环会直接终止,后面的活动ID根本没被处理,最后只返回前面成功的1个活动数据。

解决思路:给请求加上异常捕获逻辑,确保循环能继续执行:

for event_id in eventid_list:
    try:
        response = requests.get(...)
        response.raise_for_status()  # 触发HTTP错误异常
        inv_data = response.json()
        # ... 省略数据追加逻辑 ...
    except requests.exceptions.RequestException as e:
        print(f"请求活动ID {event_id} 失败: {str(e)}")
        continue  # 跳过当前错误,继续下一个活动

另外你可以检查下print(inv)的输出:如果只输出了一次,那可能循环根本没遍历完eventid_list里的所有ID,比如列表定义有误、循环条件写错了;如果每次循环都输出了对应活动的数据,但最后DataFrame只有一个,那就是上面第1点的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:20:25