我正在尝试从运行事件结果 chronotrack 平台上抓取结果。 例如,您可以在此链接上查看 2022 年智利圣地亚哥马拉松赛的成绩:https://results.chronotrack.com/event/results/event/event-74000
基于上一个问题,我设法获得了一个 url,该 url 提供了包含特定事件结果的 json。我可以修改显示的结果数量,因此它们都显示在一页中,并且不需要迭代几页
这里是设置url,并读取json数据的例子:
# create url
displaylength = 20000
event = 74000 # santiago 2023
# event = 49653 # santiago 2019
link = (
'https://results.chronotrack.com/embed/results/results-grid?callback=results_grid17740402&sEcho=7' +
f'&iColumns=11&sColumns=&iDisplayStart=0&iDisplayLength={displaylength}' +
f'&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=60107&bracketID=638654&intervalID=121077&entryID=&eventID={event}&eventTag=event-{event}' +
'&oemID=www.chronotrack.com&genID=17740402&x=1507682443198&_=1507682443198'
)
# read data
with urllib.request.urlopen(link) as url:
data = url.read().decode('utf-8')
intro = 'results_grid17740402('
dic = json.loads(data[len(intro):-2])
但是,我找不到方法来选择正确的比赛(10K、21K、42K)或跑步者类别(男子总成绩、40 岁以上女子成绩等)。我尝试调整网址上“raceID”、“bracketID”和“intervalID”后面的数字,但似乎它们对显示的数据并没有真正产生影响。
有什么提示我在创建链接时如何选择正确的种族和类别吗?
但是,我找不到方法来选择正确的比赛(10K、21K、42K)或跑步者类别(男子总成绩、40 岁以上女子成绩等)。我尝试调整网址上“raceID”、“bracketID”和“intervalID”后面的数字,但似乎它们对显示的数据并没有真正产生影响。
有什么提示我在创建链接时如何选择正确的种族和类别吗?
看来您需要更改
raceID
/bracketID
/intervalID
才能获得正确的结果:
import json
import requests
api_url = "https://results.chronotrack.com/embed/results/results-grid"
# for 10K
raceID = 192767
bracketID = 2143412
intervalID = 479537
# for 42K
# raceID = 192769
# bracketID = 2143466
# intervalID = 479543
params = {
"callback": "results_grid99708633",
"sEcho": "7",
"iColumns": "11",
"sColumns": "",
"iDisplayStart": "0",
"iDisplayLength": "9999",
"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",
"raceID": raceID,
"bracketID": bracketID,
"intervalID": intervalID,
"entryID": "",
"eventID": "74000",
"eventTag": "event-74000",
"oemID": "www.chronotrack.com",
"genID": "99708633",
"x": "1701210896091",
"_": "1701210896092",
}
data = requests.get(api_url, params=params).text
data = json.loads(data[data.index("{") : -2])
for d in data["aaData"]:
print(d[2])
打印:
Diego Ignacio Uribe Troncoso
Matias Andres Silva Lastra
Raúl Moya Vásquez
Ignacio Alexander Carrizo Godoy
Luis Gustavo Huaman Matamoros
Rodrigo Machado Hamilton
Luis Valle Barrientos
Luis Miguel Bustos Hormazabal
...