Python 3 extrait les données html d'un site de sport
Oct 11 2020
J'ai essayé d'extraire des données d'un site sportif et jusqu'à présent, j'ai échoué. J'essaie d'extraire les 35, les tirs au but et les 23 mais j'ai échoué.
<div class="statTextGroup">
<div class="statText statText--homeValue">35</div>
<div class="statText statText--titleValue">Shots on Goal</div>
<div class="statText statText--awayValue">23</div></div>
from bs4 import BeautifulSoup
import requests
result = requests.get("https://www.scoreboard.com/uk/match/lvbns58C/#match-statistics;0")
src = result.content
soup = BeautifulSoup(src, 'html.parser')
stats = soup.find("div", {"class": "tab-statistics-0-statistic"})
print(stats)
C'est le code que j'ai essayé d'utiliser et quand je l'exécute, je reçois "Aucun" imprimé sur moi. Quelqu'un pourrait-il m'aider pour que je puisse imprimer les données.
Pleine page trouvée ici: https://www.scoreboard.com/uk/match/lvbns58C/#match-statistics;0
Réponses
AlexandraDudkina Oct 11 2020 at 14:02
Comme le site Web est rendu par javascript, une option possible chargerait la page en utilisant du sélénium, puis l'analyserait avec BeautifulSoup:
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
# initialize selenium driver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
wd = webdriver.Chrome('<<PATH_TO_SELENIUMDRIVER>>', options=chrome_options)
# load page via selenium
wd.get("https://www.scoreboard.com/uk/match/lvbns58C/#match-statistics;0")
# wait 30 seconds until element with class mainGrid will be loaded
table = WebDriverWait(wd, 30).until(EC.presence_of_element_located((By.ID, 'statistics-content')))
# parse content of the table
soup = BeautifulSoup(table.get_attribute('innerHTML'), 'html.parser')
print(soup)
# close selenium driver
wd.quit()