Webscraping von Tennisdaten [geschlossen]Python

Python-Programme
Anonymous
 Webscraping von Tennisdaten [geschlossen]

Post by Anonymous »

Ich würde gerne alle Daten von „https://www.tennisexplorer.com/results/ ... =12&day=01“ webscrapen.
Aber mein aktueller Code scheint nicht in der Lage zu sein, die Spalten richtig darzustellen. (Was als mein Code begann, wurde jetzt mit chatgpt zusammengeführt, um Fehler zu beheben, und ist jetzt ein völliges Durcheinander)

Code: Select all

url = "https://www.tennisexplorer.com/results/?year=2025&month=12&day=01"

headers = {"User-Agent": "Mozilla/5.0"}

soup = BeautifulSoup(requests.get(url, headers=headers).text, "html.parser")

rows = soup.select("table.result tr.one, table.result tr.two")

matches = []

for i in range(0, len(rows), 2):
wcols = rows[i].find_all("td")
lcols = rows[i+1].find_all("td")

# --- TIME ---
time = wcols[0].get_text(strip=True)

# --- PLAYER NAMES ---
winner = wcols[1].get_text(strip=True)
loser  = lcols[1].get_text(strip=True)

# --- SET SCORES ---
set_scores = []
for s in range(3, 8):  # S1 → S5
if s >= len(wcols) or s >= len(lcols):
break

ws = wcols[s].get_text(strip=True)
ls = lcols[s].get_text(strip=True)

if not ws or not ls:
break

set_scores.append(f"{ws}-{ls}")

if not set_scores:
continue

# --- SETS WON (derived, reliable) ---
winner_sets = 0
loser_sets = 0
for s in set_scores:
w, l = map(int, s.split("-"))
if w > l:
winner_sets += 1
else:
loser_sets += 1

# --- ODDS (ONLY from winner row) ---
winner_odds = wcols[8].get_text(strip=True) if len(wcols) > 8 else None
loser_odds  = wcols[9].get_text(strip=True) if len(wcols) > 9 else None

matches.append({
"date": "2025-12-01",
"time": time,
"winner": winner,
"loser": loser,
"winner_sets": winner_sets,
"loser_sets": loser_sets,
"set_scores": set_scores,
"winner_odds": winner_odds,
"loser_odds": loser_odds
})

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post