Splinter and Beautiful Soup - экстракт элементов <section> - PullRequest
1 голос
/ 28 апреля 2020

Я пытаюсь очистить все статистические данные футбольного матча, используя 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 ниже.

enter image description here

Я также хотел бы почистить столбец «Недавние встречи», «Руководство по формам», «Сезон до сих пор» и «Статистика лучших игроков» выше, каждый из которых находится в своем собственном классе «обертка col-12» <div>.

Но мне не удается очистить <tr> в каждом соответствующем <table>, потому что каждый из них имеет свой <section>, в отличие от встречного, который имеет класс <div>, который я могу искать .


Существует ли эффективный способ очистки всех текстов <p> элементов внутри этих разделов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...