Интересная проблема.Я очищаю сайт для ставок с селеном, затем обрабатываю с помощью bs4.Проблема в том, что сайт загружает информацию о своих шансах, а не как имена команд.Например:
London v Tokyo 2/1 4/1
Amsterdam v Helsinki 5/1 3/1
New York v California 7/1 10/1
Когда я вытаскиваю это и повторяю по нему, это выглядит так:
Names = [London, Tokyo, Amsterdam, Helsinki]
Odds = [2/1, 5/1, 4/1, 3/1, 7/1, 10/1]
Коэффициенты загружаются сверху вниз, слева направо, по-разномудлина кусков.Что означает, что когда я пытаюсь объединить имена и шансы, они не будут совпадать.
Мой вопрос: как мне обойти это?В конечном итоге я хочу, чтобы информация была опубликована, поэтому за именем команды следуют ее шансы:
Games = [London, 2/1, Tokyo, 4/1, Amsterdam, 5/1, Helsinki, 3/1, New York, 7/1, California, 10/1]
** ОБНОВЛЕНИЕ ** Сайт: https://www.bet365.com/#/AC/B151/C1/D50/E2/F163/ Если вы получили целевую страницу, топросто нажмите через.Затем «Esports» на левой панели, затем «All Matches» со средней страницы.
Код:
from selenium import webdriver
from bs4 import BeautifulSoup
url = "https://www.bet365.com/#/AC/B151/C1/D50/E2/F163/"
driver = webdriver.Chrome()
driver.get(url)
# Then i'm navigating to the "All Matches" page
soup = BeautifulSoup(driver.page_source, 'html.parser')
teams = driver.find_elements_by_class_name("sl-CouponParticipantWithBookCloses_Name")
odds_raw = driver.find_elements_by_class_name("gl-ParticipantOddsOnly_Odds")
odds = []
teams_text = []
new_teams = []
new_odds = []
for name in teams:
teams_text.append(name.text)
Команды входят как блоки, например: «Лондон против Токио».Таким образом, чтобы разделить названия команд, я повторяю их и делю их
for name in teams_text:
first, second = name.split(" v ")
new_teams.append(first)
new_teams.append(second)
Затем я перевожу полученные коэффициенты и преобразовал их в десятичную:
for odd in odds_raw:
odds.append(odd.text)
for odd in odds:
first, second = odd.split("/")
new_odd = (int(first) / int(second)) + 1
new_odds.append(round(new_odd, 2))
Так что теперь у меня естьсписок всех имен команд и список десятичных нечетных значений.Вот где моя проблема.То, как bet365 выдает свои шансы на матчи, заключается в вертикальных блоках различной длины для каждого игрового подразделения.
Так что, если шансы выглядят так:
Division 1
London v Tokyo 1 2
Amsterdam v Helsinki 3 4
Division 2
New York v California 5 6
Division 3
Sydney v Brisbane 7 8
Bali v Singapore 9 10
Berlin v Paris 11 12
Тогда, когда я их вытащушансы получатся такими:
[1, 3, 2, 4, 5, 6, 7, 9, 11, 8, 10, 12]
Там, где деления разной длины, мне трудно понять, как к нему приблизиться.