Я пытаюсь очистить все статистические данные футбольного матча, используя splinter
и Beautiful Soup
вместе взятые.
Это URL матча:
https://www.premierleague.com/match/46862
Затем я нажимаю на вкладка «статистика» и проверить его. Это код, который я использовал до сих пор для того, чтобы очистить первый раздел, «голова к голове», который имеет <div>
с class_='headToHeadTable headToHeadTableLeft'
.
browser = Browser("chrome", **executable_path, headless=False)
# get page for a given match
match_url = 'https://www.premierleague.com/match/46862'
browser.visit(match_url)
match_tabs = 'li[class="matchCentreSquadLabelContainer"]' # <---- after inspection
browser.find_by_tag(match_tabs).click()
# sort the HTML
match = BeautifulSoup(browser.html, 'html.parser')
# get all stats from game
stats_tab = match.findAll('div', class_='mcTabs')
# HEAD_TO_HEAD
head_to_head = stats_tab[0].findAll('div', class_='statDetails')
# team at left side
team_left = stats_tab[0].find('div', class_='headToHeadTable headToHeadTableLeft')
team_left_name = team_left.find('a', class_='team').text
team_left_stat_names = team_left.findAll('div', class_='stat')
team_left_stat_counts = team_left.findAll('div', class_='count')
# team at right side
team_right = stats_tab[0].find('div', class_='headToHeadTable headToHeadTableRight')
team_right_name = team_right.find('a', class_='team').text
team_right_stat_names = team_right.findAll('div', class_='stat')
team_right_stat_counts = team_right.findAll('div', class_='count')
Затем следующий скребет мои желаемые результаты :
print ('HEAD TO HEAD')
print ('------------')
print(team_left_name)
for stat in team_left_stat_names:
print (stat.text)
for stat in team_left_stat_counts:
print (stat.text)
print(team_right_name)
for stat in team_right_stat_names:
print (stat.text)
for stat in team_right_stat_counts:
print (stat.text)
Но это гораздо больше, как показано на рисунке HTML ниже.
Я также хотел бы почистить столбец «Недавние встречи», «Руководство по формам», «Сезон до сих пор» и «Статистика лучших игроков» выше, каждый из которых находится в своем собственном классе «обертка col-12» <div>
.
Но мне не удается очистить <tr>
в каждом соответствующем <table>
, потому что каждый из них имеет свой <section>
, в отличие от встречного, который имеет класс <div>
, который я могу искать .
Существует ли эффективный способ очистки всех текстов <p>
элементов внутри этих разделов?