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

如何用Python筛选Chronotrack赛事数据的项目与组别?

解决Chronotrack赛事数据的项目与组别筛选问题

问题根源

你调整raceID、bracketID、intervalID后没效果,核心是这些参数是对应特定赛事项目/组别的动态标识,你硬编码的旧参数(比如示例里的60107、638654)和当前目标赛事的实际参数不匹配,自然起不到筛选作用。

正确获取筛选参数的步骤

  1. 打开目标赛事的官方结果网页(比如你提到的圣地亚哥马拉松页面)
  2. 按下F12打开浏览器开发者工具,切换到「Network」标签页
  3. 在页面上手动选择你要筛选的项目(比如42K)和组别(比如男子40岁以上),此时开发者工具会捕获到新的XHR请求
  4. 找到请求地址包含results-grid的条目,查看它的请求参数,提取其中的raceID、bracketID、intervalID——这些就是对应你所选筛选条件的有效参数

调整后的代码示例

把获取到的有效参数替换到URL里,同时优化动态参数避免缓存问题:

import urllib.request
import json
import time

# 目标赛事ID
event = 74000  # 圣地亚哥2023
# 替换成你从开发者工具获取的有效参数
race_id = "XXX"
bracket_id = "XXX"
interval_id = "XXX"
# 动态生成callback和时间戳,避免缓存
callback = f"results_grid{int(time.time())}"
timestamp = str(int(time.time() * 1000))

displaylength = 20000
link = (
    f'https://results.chronotrack.com/embed/results/results-grid?callback={callback}&sEcho=7' + 
    f'&iColumns=11&sColumns=&iDisplayStart=0&iDisplayLength={displaylength}' +
    '&mDataProp_0=0&mDataProp_1=1&mDataProp_2=2&mDataProp_3=3&mDataProp_4=4&mDataProp_5=5&mDataProp_6=6&mDataProp_7=7&mDataProp_8=8&mDataProp_9=9&mDataProp_10=10' +
    f'&raceID={race_id}&bracketID={bracket_id}&intervalID={interval_id}&entryID=&eventID={event}&eventTag=event-{event}' +
    f'&oemID=www.chronotrack.com&genID={int(time.time())}&x={timestamp}&_={timestamp}'
)

# 读取并解析数据
with urllib.request.urlopen(link) as url:
    data = url.read().decode('utf-8')

intro = f'{callback}('
dic = json.loads(data[len(intro):-2])
# 验证筛选结果
print(f"返回数据条数: {dic['iTotalRecords']}")

备选方案:本地筛选

如果API参数筛选始终有问题,也可以先获取全量数据,再在本地用Python过滤:

# 假设全量数据已获取到dic里
# 筛选42K项目+男子40岁以上组别(需根据实际列索引调整)
filtered_data = [
    row for row in dic['aaData']
    if row[2] == "Marathon (42K)" 
    and row[5] == "M 40-44"
]

注:需要根据返回的aaData列顺序,替换对应的项目/组别列索引

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 03:16:27