Веб-скрапинг теннисных данных [закрыто]Python

Программы на Python
Ответить
Anonymous
 Веб-скрапинг теннисных данных [закрыто]

Сообщение Anonymous »

Я хотел бы очистить веб-страницы от всех данных: "https://www.tennisexplorer.com/results/ ... =12&day=01"
Но мой текущий код, похоже, не позволяет правильно отображать столбцы. (то, что началось с моего кода, теперь было объединено с Chatgpt, чтобы попытаться исправить ошибки, и теперь это полный беспорядок)
url = "https://www.tennisexplorer.com/results/ ... =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.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.get_text(strip=True)
ls = lcols.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
})


Подробнее здесь: https://stackoverflow.com/questions/798 ... ennis-data
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»