Python 3 extrahiert HTML-Daten von der Sportwebsite
Oct 11 2020
Ich habe versucht, Daten von einer Sportwebsite zu extrahieren und bin bisher gescheitert. Ich versuche, die 35, Shots on Goal und 23 zu extrahieren, bin aber gescheitert.
<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)
Dies ist der Code, den ich zu verwenden versucht habe, und wenn ich ihn ausführe, wird "Keine" gedruckt. Könnte mir jemand helfen, damit ich die Daten ausdrucken kann.
Ganze Seite hier gefunden: https://www.scoreboard.com/uk/match/lvbns58C/#match-statistics;0
Antworten
AlexandraDudkina Oct 11 2020 at 14:02
Da die Website mit Javascript gerendert wird, würde eine mögliche Option die Seite mit Selen laden und dann mit BeautifulSoup analysieren:
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()