获取二级方程式赛车手的现场排名



我一直在尝试使用python向我展示二级方程式赛车的实时冠军排名,方法是获取比赛前的排名,然后将与他们所处位置相对应的积分添加到每个车手身上。我遇到的问题是,我无法从二级方程式实时计时页面获得实时更新。

我一直在使用BeautifulSoup尝试从f2网站上抓取数据。

试试这个:

import pandas as pd
from bs4 import BeautifulSoup
import lxml
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import time
url = 'https://www.fiaformula2.com/livetiming/index.html'
options = Options()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--incognito')
options.add_argument('--headless')
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
driver.get(url)
time.sleep(3)
page_source = driver.page_source
#   --------------------------------------------
soup = BeautifulSoup(page_source, 'lxml')
reviews = []
cols = []
dv = soup.find('div', {"class": "scrollable"})
if dv:
heads = dv.find_all('th')
for i in range(len(heads)):
cols.append(str(heads[i]["class"][0]))

rows = dv.find_all('tr')
data = {}  
tds = []
for row in rows:
tds = row.find_all('td')

if tds:
i = -1
for td in tds:
i += 1
data[cols[i]] = td.text

reviews.append(data)
data = {}

df = pd.DataFrame(reviews)
print(df)

使用selenium获取url,并等待3秒钟以显示表,然后使用bs4。这是结果(熊猫数据帧(

'''
position car-number driver-short-name driver-full-name   gap  ...  best-lap sector1-time sector2-time sector3-time pit
0         1         11               DRU      F.DRUGOVICH   LAP  ...  1:25.265         29.2         30.4         25.6   2
1         2         20               VER      R.VERSCHOOR   2.4  ...  1:25.640         29.1         30.8         25.6   2
2         3         17               IWA          A.IWASA   3.6  ...  1:26.022         29.2         31.0         25.7   2
3         4          1               HAU         D.HAUGER   6.9  ...  1:25.647         29.1         30.8         25.5   2
4         5         22               FIT     E.FITTIPALDI   7.9  ...  1:25.641         29.1         30.8         25.6   2
5         6         25               COR        A.CORDEEL  10.8  ...  1:25.573         28.9         31.0         25.5   2
6         7          8               VIP           J.VIPS  12.4  ...  1:25.909         29.1         31.1         25.6   2
7         8         24               BEC       D.BECKMANN  13.1  ...  1:25.986         28.9         31.1         25.9   3
8         9         14               OCA       O.CALDWELL  14.6  ...  1:25.834         29.2         30.9         25.5   2
9        10         10               POU     T.POURCHAIRE  15.5  ...  1:25.494         28.8         30.8         25.8   2
10       11          2               DAR       J.DARUVALA  17.2  ...  1:27.889         29.3         31.1         27.3   2
11       12         21               WIL       C.WILLIAMS  18.4  ...  1:26.363         29.2         31.1         25.9   2
12       13          5               LAW         L.LAWSON  20.2  ...  1:24.738         28.7         30.3         25.6   2
13       14          7               ARM      M.ARMSTRONG  25.6  ...  1:24.474         28.7         30.4         25.2   2
14       15         16               NIS        R.NISSANY  27.1  ...  1:24.314         28.6         30.5         25.1   2
15       16          9               VES          F.VESTI  29.3  ...  1:24.348         28.8         30.1         25.3   2
16       17         15               BOS       R.BOSCHUNG  50.6  ...  1:29.340         30.5         31.8         26.9   2
17       18         23               TCA       T.CALDERON   17L  ...   RETIRED                                          2
18       19         12               NOV        C.NOVALAK   17L  ...   RETIRED                                          3
19       20          3               DOO         J.DOOHAN   18L  ...      STOP         40.4         39.9         STOP   2
20       21          4               SAT           M.SATO   22L  ...      STOP         STOP                             2
21       22          6               SAR       L.SARGEANT        ...      STOP                      STOP
'''

或者u可以使用非硒溶液。安装websocket-lib,例如:

pip install websocket-client

现在要连接到套接字,您需要令牌,只需获取即可:

def get_connection_token():
url = "https://ltss.fiaformula2.com/streaming/negotiate?clientProtocol=2.1&connectionData=%5B%7B%22name%22%3A%22streaming%22%7D%5D"
headers = {
'Accept': 'text/plain, */*; q=0.01',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
}
response = requests.request("GET", url, headers=headers)
return response.json()['ConnectionToken']

接下来,我们需要将我们的令牌替换到websocket路径中。我们订阅打开和接收消息的活动。当我们打开时,我们会向套接字发送一个字典,其中包含我们想要接收的信息。因此,我们有了一个信息量很大的JSON,您现在可以使用它做任何您想做的事情。

def on_message(ws, message):
json_obj = json.loads(message)
if 'R' in json_obj:
print(json_obj['R']['data'][2])
ws.keep_running = False

def on_open(ws):
data = {"H": "streaming", "M": "GetData2", "A": ["F2",
["data", "statsfeed", "weatherfeed", "sessionfeed", "trackfeed",
"commentaryfeed", "timefeed", "racedetailsfeed"]], "I": 1}
ws.send(json.dumps(data))

if __name__ == "__main__":
token = str(get_connection_token()).replace('/', '%2F').replace('+', '%2B')
ws = websocket.WebSocketApp(f"wss://ltss.fiaformula2.com/streaming/connect?transport=webSockets&clientProtocol=2.1"
f"&connectionToken={token}"
f"&connectionData=%5B%7B%22name%22%3A%22streaming%22%7D%5D",
on_open=on_open,
on_message=on_message)
ws.run_forever()

输出:

{'R': {'commentaryfeed': [['Good morning! The sun is shining, the breeze is blowing and the FIA Formula 2 Feature Race is about to get underway around the Circuit Zandvoort. ', "It's advantage Felipe Drugovich as the Championship leader lines up on pole. He'll have rookie Jack Doohan for company on the front row.", 'The formation lap is underway.', "It's a mixed start for our leading pack - Drugovich gets a strong start to hold off Doohan, while Logan Sargeant locks up and sails through the gravel into Turn 1.", 'SAFETY CAR!', "The Safety Car is deployed after Sargeant's Carlin finds the barriers.", 'Replays show that the American driver made contact with the rear end of Ralph Boschung, sending him into the barriers at Turn 7.', "Lap 3: As it stands, Drugovich leads ahead of Doohan. However, it's Dennis Hauger who's made the most of the opening lap to go from seventh to third.", 'RED FLAG!', 'The race has been suspended on Lap 4 of 40.', 'The cars proceed into the pit lane as barrier repairs are made. ', 'Off the back of his maiden podium in the Sprint Race yesterday, Clement Novalak has made moves - going from 10th to seventh.', 'Amaury Cordeel also improved on the opening lap, as the Van Amersfoort Racing driver now sits in ninth, having started 12th. ', 'After starting on the option tyres, Drugovich, Doohan, Hauger, Verschoor, Lawson and Cordeel have all switched to the medium compound under the Red Flag - they will all still need to make their mandatory stop later in the race. ', 'The race will resume in 10 minutes time.', 'The drivers are heading back out behind the Safety Car as Drugovich will get racing underway with a rolling start.', 'Lap 6: Drugovich floors the throttle early to pull away on the restart, as Novalak and Armstrong knock wheels on the exit of Turn 1. ', 'Lap 7: Fittipaldi goes brave around the outside of Vesti to move up in the top 10. ', "Taking full advantage of the soft tyres, Novalak's on a charge and the MP Motorsport driver is putting Liam Lawson under immense pressure for sixth. ", 'Lap 8: Cordeel and Calan Williams become the first drivers to jump into the pits for their mandatory stops, bolting on the white-walled hard tyres. ', 'Lap 9: A huge lock-up for Doohan! What a nervy moment for the Virtuosi Racing driver. ', "Lap 10: Novalak comes into the pits - he'll need to stretch his tyres across the 30 laps remaining. ", 'Lap 11: Trying to undercut Drugovich and Doohan ahead, Hauger dives into the pits - can the PREMA Racing driver get the out lap he needs?', 'Lap 12: On their last legs, Doohan heads into the pits to swap out his heavily degraded tyres - Iwasa also heads in on the same lap. ', 'Lap 13: The overcut has worked for Iwasa, as the DAMS driver gets the jump on Hauger for 12th - a net podium position.', 'Lap 14: Time for Drugovich to pit and he heads back out comfortably ahead of Doohan. Verschoor assumes the race lead and is pushing all the way to his pit stop. ', "Lap 15: Verschoor pits and comes out smack bang in between Drugovich and Doohan - but the Virtuosi isn't waiting around as he goes around the outside of the banking at Turn 3 to take ninth. ", 'SAFETY CAR!', 'Lap 17: Marino Sato has found the barrier on the exit of Turn 2 on his exit from the pits.', 'Pit lane entry has been closed - the drivers are unable to make their mandatory pit stops behind the Safety Car this weekend. ', 'Lap 21: Racing to resume at the end of this lap. ', 'Lap 22: Lawson leaves it late, bunching the field up behind him all the way to the line. ', 'SAFETY CAR!', "It's a disaster for Doohan on the restart, as the Australian is in the wall after contact behind. Novalak's race is also over following damage at the start of the main straight.", 'Moments before the Safety Car was deployed, Theo Pourchaire got the move done on his teammate Frederik Vesti to move up to third.', 'Charouz Racing System;s Tatiana Calderon is another retiree from the race. ', 'The Safety Car is in at the end of this lap.', 'Lap 26: Lawson catches half the field napping on the restart to pull clear of Pourchaire - as Armstrong dives in to change his tyres once the pit window reopens. ', 'The race is now running to time - with 12 minutes left of the maximum 60 minutes plus a lap remaining.', '11 Minutes: Despite a bashed front nose, Verschoor is on the charge. The home hero is hunting down Drugovich for the lead of the race. ', 'David Beckman and Olli Caldwell are the biggest movers so far - the pair have made up 10 places each and sit in eighth and ninth as things stand.', '7 Minutes: Drugovich has pulled out a 1.3s gap, which has allowed Iwasa to close in to within DRS on second place Verschoor. ', "4 Minutes: Cordeel is putting Enzo Fittipaldi under pressure for fifth - but with only a handful of minutes left, there's not long to make a move stick.", '2 Minutes: Caldwell is putting on a strong defensive drive to hold Daruvala at bay for ninth. ', "1 Minute: Jüri Vips is right on Cordeel's rear wing, but the Hitech Grand Prix driver is also having to manage defending from Cordeel's Van Amersfoort Racing teammate Beckmann behind.  ", "0 Minutes: Drugovich crosses the line moments after the MP car crosses the line as the race heads into it's final two laps.", 'FINAL LAP!', 'FELIPE DRUGOVICH WINS THE ZANDVOORT FEATURE RACE!', "The crowd's are jubilant as Richard Verschoor takes second at his home race and Ayumu Iwasa rounds out the podium.", 'Hauger rounded off a positive weekend in fourth ahead of Fittipaldi and Cordeel, who secures his first points in F2.', 'Vips was seventh, as both VAR cars finish in the points with Beckman taking eighth ahead of Caldwell. Pourchaire fights back to finish inside the points in P10.', "You won't have long to wait as Formula 2 returns to Monza next weekend, September 9-11, for the penultimate round of the 2022 season. ", "You won't have long to wait as Formula 2 returns to Monza next weekend, September 9-11, for the penultimate round of the 2022 season. "]], 'data': ['2022-09-04T10:49:19.064', {'Series': 'F2', 'Session': 'Race', 'DataWithheld': 0}, {'11': {'Number': '1', 'position': {'Show': 1, 'Value': '1'}, 'status': {'Retired': 0, 'InPit': 0, 'PitOut': 0, 'Stopped': 0, 'ts': '04/09/2022 10:07:54.477'}, 'driver': {'RacingNumber': '11', 'FullName': 'Felipe DRUGOVICH', 'BroadcastName': 'F DRUGOVICH', 'TLA': 'DRU'}, 'gap': {'Value': ''}, 'interval': {'Value': ''}, 'laps': {'Value': '38'}, 'pits': {'Value': '2'}, 'sectors': [{'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '1', 'Value': '29.2'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '2', 'Value': '30.4'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '3', 'Value': '25.6'}], 'last': {'OverallFastest': 0, 'PersonalFastest': 0, 'Value': '1:25.265'}, 'best': {'Lap': '29', 'Value': '1:24.879'}}, '3': {'Number': '20', 'position': {'Show': 0, 'Value': '20'}, 'status': {'Retired': 0, 'InPit': 0, 'PitOut': 0, 'Stopped': 1, 'ts': '04/09/2022 10:22:40.370'}, 'driver': {'RacingNumber': '3', 'FullName': 'Jack DOOHAN', 'BroadcastName': 'J DOOHAN', 'TLA': 'DOO'}, 'gap': {'Value': '.'}, 'interval': {'Value': '.'}, 'laps': {'Value': '20'}, 'pits': {'Value': '2'}, 'sectors': [{'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '1', 'Value': '40.4'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '2', 'Value': '39.9'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 1, 'Id': '3', 'Value': ''}], 'last': {'OverallFastest': 0, 'PersonalFastest': 0, 'Value': '1:58.929'}, 'best': {'Lap': '8', 'Value': '1:25.056'}}, '6': {'Number': '22', 'position': {'Show': 0, 'Value': '22'}, 'status': {'Retired': 0, 'InPit': 0, 'PitOut': 0, 'Stopped': 1, 'ts': '04/09/2022 09:25:00.414'}, 'driver': {'RacingNumber': '6', 'FullName': 'Logan SARGEANT', 'BroadcastName': 'L SARGEANT', 'TLA': 'SAR'}, 'gap': {'Value': ''}, 'interval': {'Value': ''}, 'laps': {'Value': ''}, 'pits': {'Value': ''}, 'sectors': [{'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '1', 'Value': ''}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 1, 'Id': '2', 'Value': ''}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '3', 'Value': ''}], 'last': {'OverallFastest': 0, 'PersonalFastest': 0, 'Value': ''}, 'best': {'Lap': '', 'Value': ''}}, '20': {'Number': '2', 'position': {'Show': 1, 'Value': '2'}, 'status': {'Retired': 0, 'InPit': 0, 'PitOut': 0, 'Stopped': 0, 'ts': '04/09/2022 10:09:23.127'}, 'driver': {'RacingNumber': '20', 'FullName': 'Richard VERSCHOOR', 'BroadcastName': 'R VERSCHOOR', 'TLA': 'VER'}, 'gap': {'Value': '+2.4'}, 'interval': {'Value': '+2.4'}, 'laps': {'Value': '38'}, 'pits': {'Value': '2'}, 'sectors': [{'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '1', 'Value': '29.1'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '2', 'Value': '30.8'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '3', 'Value': '25.6'}], 'last': {'OverallFastest': 0, 'PersonalFastest': 0, 'Value': '1:25.640'}, 'best': {'Lap': '30', 'Value': '1:25.064'}}, '17': {'Number': '3', 'position': {'Show': 1, 'Value': '3'}, 'status': {'Retired': 0, 'InPit': 0, 'PitOut': 0, 'Stopped': 0, 'ts': '04/09/2022 10:06:34.428'}, 'driver': {'RacingNumber': '17', 'FullName': 'Ayumu IWASA', 'BroadcastName': 'A IWASA', 'TLA': 'IWA'}, 'gap': {'Value': '+3.6'}, 'interval': {'Value': '+1.2'}, 'laps': {'Value': '38'}, 'pits': {'Value': '2'}, 'sectors': [{'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '1', 'Value': '29.2'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '2', 'Value': '31.0'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '3', 'Value': '25.7'}], 'last': {'OverallFastest': 0, 'PersonalFastest': 0, 'Value': '1:26.022'}, 'best': {'Lap': '34', 'Value': '1:24.995'}}, '5': {'Number': '13', 'position': {'Show': 1, 'Value': '13'}, 'status': {'Retired': 0, 'InPit': 0, 'PitOut': 0, 'Stopped': 0, 'ts': '04/09/2022 10:33:46.667'}, 'driver': {'RacingNumber': '5', 'FullName': 'Liam LAWSON', 'BroadcastName': 'L LAWSON', 'TLA': 'LAW'}, 'gap': {'Value': '+20.2'}, 'interval': {'Value': '+1.7'}, 'laps': {'Value': '38'}, 'pits': {'Value': '2'}, 'sectors': [{'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '1', 'Value': '28.7'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '2', 'Value': '30.3'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '3', 'Value': '25.6'}], 'last': {'OverallFastest': 0, 'PersonalFastest': 0, 'Value': '1:24.738'}, 'best': {'Lap': '30', 'Value': '1:23.865'}}, '1': {'Number': '4', 'position': {'Show': 1, 'Value': '4'}, 'status': {'Retired': 0, 'InPit': 0, 'PitOut': 0, 'Stopped': 0, 'ts': '04/09/2022 10:03:42.218'}, 'driver': {'RacingNumber': '1', 'FullName': 'Dennis HAUGER', 'BroadcastName': 'D HAUGER', 'TLA': 'HAU'}, 'gap': {'Value': '+6.9'}, 'interval': {'Value': '+3.3'}, 'laps': {'Value': '38'}, 'pits': {'Value': '2'}, 'sectors': [{'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '1', 'Value': '29.1'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '2', 'Value': '30.8'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '3', 'Value': '25.5'}], 'last': {'OverallFastest': 0, 'PersonalFastest': 0, 'Value': '1:25.647'}, 'best': {'Lap': '32', 'Value': '1:25.203'}}, '8': {'Number': '7', 'position': {'Show': 1, 'Value': '7'}, 'status': {'Retired': 0, 'InPit': 0, 'PitOut': 0, 'Stopped': 0, 'ts': '04/09/2022 10:05:17.324'}, 'driver': {'RacingNumber': '8', 'FullName': 'Juri VIPS', 'BroadcastName': 'J VIPS', 'TLA': 'VIP'}, 'gap': {'Value': '+12.4'}, 'interval': {'Value': '+1.5'}, 'laps': {'Value': '38'}, 'pits': {'Value': '2'}, 'sectors': [{'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '1', 'Value': '29.1'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '2', 'Value': '31.1'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '3', 'Value': '25.6'}], 'last': {'OverallFastest': 0, 'PersonalFastest': 0, 'Value': '1:25.909'}, 'best': {'Lap': '14', 'Value': '1:24.934'}}, '7': {'Number': '14', 'position': {'Show': 1, 'Value': '14'}, 'status': {'Retired': 0, 'InPit': 0, 'PitOut': 0, 'Stopped': 0, 'ts': '04/09/2022 10:30:58.538'}, 'driver': {'RacingNumber': '7', 'FullName': 'Marcus ARMSTRONG', 'BroadcastName': 'M ARMSTRONG', 'TLA': 'ARM'}, 'gap': {'Value': '+25.6'}, 'interval': {'Value': '+5.3'}, 'laps': {'Value': '38'}, 'pits': {'Value': '2'}, 'sectors': [{'OverallFastest': 0, 'PersonalFastest': 1, 'Stopped': 0, 'Id': '1', 'Value': '28.7'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '2', 'Value': '30.4'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '3', 'Value': '25.2'}], 'last': {'OverallFastest': 0, 'PersonalFastest': 0, 'Value': '1:24.474'}, 'best': {'Lap': '28', 'Value': '1:24.329'}}, '12': {'Number': '19', 'position': {'Show': 0, 'Value': '19'}, 'status': {'Retired': 1, 'InPit': 1, 'PitOut': 0, 'Stopped': 1, 'ts': '04/09/2022 10:23:55.369'}, 'driver': {'RacingNumber': '12', 'FullName': 'Clement NOVALAK', 'BroadcastName': 'C NOVALAK', 'TLA': 'NOV'}, 'gap': {'Value': '.'}, 'interval': {'Value': '+4.6'}, 'laps': {'Value': '21'}, 'pits': {'Value': '3'}, 'sectors': [{'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '1', 'Value': '39.6'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '2', 'Value': '39.8'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '3', 'Value': '54.4'}], 'last': {'OverallFastest': 0, 'PersonalFastest': 0, 'Value': '2:14.011'}, 'best': {'Lap': '12', 'Value': '1:25.358'}}, '9': {'Number': '16', 'position': {'Show': 1, 'Value': '16'}, 'status': {'Retired': 0, 'InPit': 0, 'PitOut': 0, 'Stopped': 0, 'ts': '04/09/2022 10:35:23.891'}, 'driver': {'RacingNumber': '9', 'FullName': 'Frederik VESTI', 'BroadcastName': 'F VESTI', 'TLA': 'VES'}, 'gap': {'Value': '+29.3'}, 'interval': {'Value': '+2.2'}, 'laps': {'Value': '38'}, 'pits': {'Value': '2'}, 'sectors': [{'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '1', 'Value': '28.8'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '2', 'Value': '30.1'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '3', 'Value': '25.3'}], 'last': {'OverallFastest': 0, 'PersonalFastest': 0, 'Value': '1:24.348'}, 'best': {'Lap': '31', 'Value': '1:23.078'}}, '25': {'Number': '6', 'position': {'Show': 1, 'Value': '6'}, 'status': {'Retired': 0, 'InPit': 0, 'PitOut': 0, 'Stopped': 0, 'ts': '04/09/2022 09:59:33.446'}, 'driver': {'RacingNumber': '25', 'FullName': 'Amaury CORDEEL', 'BroadcastName': 'A CORDEEL', 'TLA': 'COR'}, 'gap': {'Value': '+10.8'}, 'interval': {'Value': '+2.8'}, 'laps': {'Value': '38'}, 'pits': {'Value': '2'}, 'sectors': [{'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '1', 'Value': '28.9'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '2', 'Value': '31.0'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '3', 'Value': '25.5'}], 'last': {'OverallFastest': 0, 'PersonalFastest': 0, 'Value': '1:25.573'}, 'best': {'Lap': '10', 'Value': '1:25.469'}}, '22': {'Number': '5', 'position': {'Show': 1, 'Value': '5'}, 'status': {'Retired': 0, 'InPit': 0, 'PitOut': 0, 'Stopped': 0, 'ts': '04/09/2022 10:03:52.349'}, 'driver': {'RacingNumber': '22', 'FullName': 'Enzo FITTIPALDI', 'BroadcastName': 'E FITTIPALDI', 'TLA': 'FIT'}, 'gap': {'Value': '+7.9'}, 'interval': {'Value': '+1.0'}, 'laps': {'Value': '38'}, 'pits': {'Value': '2'}, 'sectors': [{'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '1', 'Value': '29.1'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '2', 'Value': '30.8'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '3', 'Value': '25.6'}], 'last': {'OverallFastest': 0, 'PersonalFastest': 0, 'Value': '1:25.641'}, 'best': {'Lap': '37', 'Value': '1:25.200'}}, '16': {'Number': '15', 'position': {'Show': 1, 'Value': '15'}, 'status': {'Retired': 0, 'InPit': 0, 'PitOut': 0, 'Stopped': 0, 'ts': '04/09/2022 10:31:01.734'}, 'driver': {'RacingNumber': '16', 'FullName': 'Roy NISSANY', 'BroadcastName': 'R NISSANY', 'TLA': 'NIS'}, 'gap': {'Value': '+27.1'}, 'interval': {'Value': '+1.5'}, 'laps': {'Value': '38'}, 'pits': {'Value': '2'}, 'sectors': [{'OverallFastest': 0, 'PersonalFastest': 1, 'Stopped': 0, 'Id': '1', 'Value': '28.6'}, {'OverallFastest': 0, 'PersonalFastest': 0, 'Stopped': 0, 'Id': '2', 'Value': '30.5'}, {'OverallFastest': 0, 'PersonalFastest': 1, 'Stopped': 0, 'Id': '3', 'Value': '25.1'}], 'last': {'OverallFastest': 0, 'PersonalFastest': 0, 'Value': '2:12.100'}, 'best': {'Lap': '12', 'Value': '1:26.891'}}}], 'racedetailsfeed': ['2022-09-04T09:15:06.375', {'Season': 'Formula 2 2022', 'Round': 'Round 12', 'Race': 'Zandvoort', 'Circuit': 'Zandvoort Circuit', 'Country': 'Netherlands', 'CountryCode': 'NL', 'Date': '2022-09-04', 'Session': 'Feature Race'}], 'sessionfeed': ['2022-09-04T10:51:15.553', {'Value': 'Finalised'}], 'statsfeed': ['2022-09-04T10:48:55.474', {'1': {'Number': '1', 'driver': {'RacingNumber': '1'}, 'PersonalBestLapTime': {'Lap': '32', 'Position': '14', 'Value': '1:25.203'}, 'BestSectors': [{'Position': '13', 'Id': '1', 'Value': '28.9'}, {'Position': '11', 'Id': '2', 'Value': '30.3'}, {'Position': '4', 'Id': '3', 'Value': '25.2'}], 'BestSpeeds': [{'Position': '15', 'Id': 'FL', 'Value': '283'}, {'Position': '13', 'Id': 'I1', 'Value': '267'}, {'Position': '17', 'Id': 'I2', 'Value': '248'}, {'Position': '9', 'Id': 'ST', 'Value': '284'}]}, '8': {'Number': '8', 'driver': {'RacingNumber': '8'}, 'PersonalBestLapTime': {'Lap': '14', 'Position': '8', 'Value': '1:24.934'}, 'BestSectors': [{'Position': '9', 'Id': '1', 'Value': '28.9'}, {'Position': '10', 'Id': '2', 'Value': '30.3'}, {'Position': '12', 'Id': '3', 'Value': '25.4'}], 'BestSpeeds': [{'Position': '1', 'Id': 'FL', 'Value': '296'}, {'Position': '3', 'Id': 'I1', 'Value': '270'}, {'Position': '1', 'Id': 'I2', 'Value': '254'}, {'Position': '6', 'Id': 'ST', 'Value': '285'}]}, '9': {'Number': '9', 'driver': {'RacingNumber': '9'}, 'PersonalBestLapTime': {'Lap': '31', 'Position': '1', 'Value': '1:23.078'}, 'BestSectors': [{'Position': '2', 'Id': '1', 'Value': '28.6'}, {'Position': '1', 'Id': '2', 'Value': '29.3'}, {'Position': '1', 'Id': '3', 'Value': '25.0'}], 'BestSpeeds': [{'Position': '10', 'Id': 'FL', 'Value': '290'}, {'Position': '14', 'Id': 'I1', 'Value': '266'}, {'Position': '13', 'Id': 'I2', 'Value': '250'}, {'Position': '4', 'Id': 'ST', 'Value': '285'}]}, '10': {'Number': '10', 'driver': {'RacingNumber': '10'}, 'PersonalBestLapTime': {'Lap': '30', 'Position': '2', 'Value': '1:23.339'}, 'BestSectors': [{'Position': '1', 'Id': '1', 'Value': '28.5'}, {'Position': '2', 'Id': '2', 'Value': '29.5'}, {'Position': '2', 'Id': '3', 'Value': '25.0'}], 'BestSpeeds': [{'Position': '9', 'Id': 'FL', 'Value': '291'}, {'Position': '1', 'Id': 'I1', 'Value': '270'}, {'Position': '5', 'Id': 'I2', 'Value': '252'}, {'Position': '19', 'Id': 'ST', 'Value': '276'}]}, '17': {'Number': '16', 'driver': {'RacingNumber': '17'}, 'PersonalBestLapTime': {'Lap': '34', 'Position': '9', 'Value': '1:24.995'}, 'BestSectors': [{'Position': '11', 'Id': '1', 'Value': '28.9'}, {'Position': '16', 'Id': '2', 'Value': '30.4'}, {'Position': '5', 'Id': '3', 'Value': '25.3'}], 'BestSpeeds': [{'Position': '3', 'Id': 'FL', 'Value': '293'}, {'Position': '4', 'Id': 'I1', 'Value': '269'}, {'Position': '11', 'Id': 'I2', 'Value': '251'}, {'Position': '21', 'Id': 'ST', 'Value': '267'}]}, '20': {'Number': '17', 'driver': {'RacingNumber': '20'}, 'PersonalBestLapTime': {'Lap': '30', 'Position': '12', 'Value': '1:25.064'}, 'BestSectors': [{'Position': '12', 'Id': '1', 'Value': '28.9'}, {'Position': '12', 'Id': '2', 'Value': '30.3'}, {'Position': '9', 'Id': '3', 'Value': '25.4'}], 'BestSpeeds': [{'Position': '12', 'Id': 'FL', 'Value': '289'}, {'Position': '7', 'Id': 'I1', 'Value': '268'}, {'Position': '8', 'Id': 'I2', 'Value': '251'}, {'Position': '17', 'Id': 'ST', 'Value': '277'}]}, '21': {'Number': '18', 'driver': {'RacingNumber': '21'}, 'PersonalBestLapTime': {'Lap': '11', 'Position': '19', 'Value': '1:25.571'}, 'BestSectors': [{'Position': '14', 'Id': '1', 'Value': '29.0'}, {'Position': '17', 'Id': '2', 'Value': '30.4'}, {'Position': '17', 'Id': '3', 'Value': '25.5'}], 'BestSpeeds': [{'Position': '7', 'Id': 'FL', 'Value': '291'}, {'Position': '9', 'Id': 'I1', 'Value': '268'}, {'Position': '7', 'Id': 'I2', 'Value': '252'}, {'Position': '8', 'Id': 'ST', 'Value': '284'}]}, '22': {'Number': '19', 'driver': {'RacingNumber': '22'}, 'PersonalBestLapTime': {'Lap': '37', 'Position': '13', 'Value': '1:25.200'}, 'BestSectors': [{'Position': '7', 'Id': '1', 'Value': '28.9'}, {'Position': '19', 'Id': '2', 'Value': '30.5'}, {'Position': '10', 'Id': '3', 'Value': '25.4'}], 'BestSpeeds': [{'Position': '4', 'Id': 'FL', 'Value': '293'}, {'Position': '2', 'Id': 'I1', 'Value': '270'}, {'Position': '3', 'Id': 'I2', 'Value': '253'}, {'Position': '2', 'Id': 'ST', 'Value': '286'}]}, '23': {'Number': '20', 'driver': {'RacingNumber': '23'}, 'PersonalBestLapTime': {'Lap': '12', 'Position': '21', 'Value': '1:26.891'}, 'BestSectors': [{'Position': '21', 'Id': '1', 'Value': '29.7'}, {'Position': '21', 'Id': '2', 'Value': '31.0'}, {'Position': '21', 'Id': '3', 'Value': '25.9'}], 'BestSpeeds': [{'Position': '17', 'Id': 'FL', 'Value': '281'}, {'Position': '21', 'Id': 'I1', 'Value': '261'}, {'Position': '15', 'Id': 'I2', 'Value': '249'}, {'Position': '15', 'Id': 'ST', 'Value': '280'}]}, '24': {'Number': '21', 'driver': {'RacingNumber': '24'}, 'PersonalBestLapTime': {'Lap': '15', 'Position': '10', 'Value': '1:25.044'}, 'BestSectors': [{'Position': '8', 'Id': '1', 'Value': '28.9'}, {'Position': '8', 'Id': '2', 'Value': '30.1'}, {'Position': '18', 'Id': '3', 'Value': '25.6'}], 'BestSpeeds': [{'Position': '5', 'Id': 'FL', 'Value': '292'}, {'Position': '6', 'Id': 'I1', 'Value': '268'}, {'Position': '4', 'Id': 'I2', 'Value': '252'}, {'Position': '18', 'Id': 'ST', 'Value': '276'}]}, '25': {'Number': '22', 'driver': {'RacingNumber': '25'}, 'PersonalBestLapTime': {'Lap': '10', 'Position': '17', 'Value': '1:25.469'}, 'BestSectors': [{'Position': '6', 'Id': '1', 'Value': '28.8'}, {'Position': '18', 'Id': '2', 'Value': '30.5'}, {'Position': '16', 'Id': '3', 'Value': '25.5'}], 'BestSpeeds': [{'Position': '8', 'Id': 'FL', 'Value': '291'}, {'Position': '8', 'Id': 'I1', 'Value': '268'}, {'Position': '9', 'Id': 'I2', 'Value': '251'}, {'Position': '11', 'Id': 'ST', 'Value': '283'}]}}], 'timefeed': ['2022-09-04T10:56:15.007', False, '00:00:00'], 'trackfeed': ['2022-09-04T10:29:52.008', {'Value': '1', 'Message': 'AllClear'}], 'weatherfeed': ['2022-09-04T10:55:26.977', {'airtemp': '22.8', 'humidity': '69.0', 'pressure': '1016.5', 'rainfall': '0', 'tracktemp': '28.3', 'windspeed': '1.5', 'winddir': '251'}]}, 'I': '1'}

最新更新