seit kurzer Zeit begeistere ich mich über die Möglichkeiten mit Python.
Allerdings bin ich erst am Anfang einer wohl eher langen Strecke.
Ich habe ein Python Script, welches die Spiele und Ergebnisse aus bestimmter Saison von der Webseite Sofascore feststellt und mit den Daten eine Excel Datei erzeugt.
Meine Frage;
In Sofascore sind auch die zukünftigen Paarungen der aktuellen Saison bestimmter Ligen abrufbar. Aber wie komme ich an diese Daten? Ich stelle in diesen Beitrag mein bisheriges Script rein,- die Korrektur dürfte wohl nicht so umfangreich sein. Kann ein Experte mal drauf schauen und mir bei der Modifizierung bitte helfen? Das Script ist auf die 1. Chinesische Liga ausgerichtet,- die noch am laufen ist. Ich möchte erreichen, das die noch "offenen Matches" in eine Excel geladen werden.
Script:
Code: Alles auswählen
import requests
import pandas as pd
import os
import time
def get_all_events(tournament_id, season_id):
result = []
i = 0
hasNextPage = True
while hasNextPage:
url = f'https://www.sofascore.com/api/v1/unique-tournament/{tournament_id}/season/{season_id}/events/last/{i}'
response = requests.get(url)
data = response.json()
hasNextPage = data.get('hasNextPage')
result.extend(reversed(data.get('events', [])))
i += 1
return result
def get_match_incidents(event_id):
url = f'https://www.sofascore.com/api/v1/event/{event_id}/incidents'
response = requests.get(url)
data = response.json()
return data.get('incidents', [])
def main(tournament_id, season_id, output_file):
data = []
matches = get_all_events(tournament_id, season_id)
for match in matches:
incidents = get_match_incidents(match['id'])
data.append([
match['tournament']['name'],
match['homeTeam']['name'],
match['homeScore'].get('current', 'N/A'),
match['awayTeam']['name'],
match['awayScore'].get('current', 'N/A'),
time.strftime('%x %X', time.localtime(int(match['startTimestamp']))),
', '.join(f"{i['time']}'" for i in incidents if i['incidentType'] == 'goal')
])
headers = ['Tournament', 'Home Team', 'Home Score', 'Away Team', 'Away Score', 'Start Date', 'Goal Times']
df = pd.DataFrame(data, columns=headers)
df.to_excel(output_file, index=False)
if __name__ == '__main__':
tournament_id = 649
season_id = 58388
output_file = "China_1_23-24.xlsx"
main(tournament_id, season_id, output_file)
Gruss
Fred