События динамически загружаются с отдельным запросом API, а затем с помощью JS, выполняемого браузером, создаются события div
. Вам нужно что-то сделать для этого запроса и выполнить JavaScript - например, настоящий браузер. Работа примера использования обезглавленного PhantomJS
контролируется selenium
:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.PhantomJS()
driver.get("http://espn.go.com/mens-college-basketball/scoreboard/_/date/20160313")
# waiting for at least a single event to load/appear
wait = WebDriverWait(driver, 10)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#events article")))
for event in driver.find_elements_by_css_selector("#events article"):
home, away = event.find_elements_by_css_selector("#teams > tr")
home_team_name = home.find_element_by_css_selector("h2 > a[name]").text
away_team_name = away.find_element_by_css_selector("h2 > a[name]").text
home_score = home.find_element_by_css_selector("td.total").text
away_score = away.find_element_by_css_selector("td.total").text
print("'{}' against '{}'. Score: {}: {}".format(home_team_name, away_team_name, home_score, away_score))
driver.close()
Печать:
'Purdue' against 'Michigan State'. Score: 62: 66
'Kentucky' against 'Texas A&M'. Score: 82: 77
Да, это, вероятно, что содержание внутри DIV создается с помощью Javascript. Чтобы подтвердить, что вы можете использовать вкладку «Сеть» в консоли браузера, чтобы узнать, какие данные загружает сайт после загрузки главной страницы. Затем вы можете ** попробовать ** сделать тот же запрос, что и код Javascript, чтобы получить доступ к данным оценки, но ваш пробег будет отличаться ... –