Не совсем уверен, какие именно столбцы вы хотите, но он получает все с data-val
в атрибутах тега:
import requests
from bs4 import BeautifulSoup
url = 'https://projects.fivethirtyeight.com/soccer-predictions/premier-league/'
r = requests.get(url)
soup = BeautifulSoup(r.text, "html.parser")
table = soup.find("table", {"class": "forecast-table"})
team_rows = table.find_all("tr", {"class": "team-row"})
for team in team_rows:
print("Team name: {}".format(team['data-str']))
team_data = team.find_all("td")
for data in team_data:
if hasattr(data, 'attrs') and 'data-val' in data.attrs:
print("\t{}".format(data.attrs['data-val']))
print("\n")
Если я правильно понимаю ваш вопрос, вы ищетепоследняя пара значений, которые довольно нетегированы в источнике html.В этом случае вы можете просто попытаться найти tag[6]
, хотя это, конечно, не очень надежно - но этот является разбором html, так что "не очень надежно" является нормой для курса imho.
что я здесь делаю, так это нахожу все строки команд (что легко благодаря названию класса), а затем просто перебираю все теги td
, которые есть в строках команд 'tr
,