Я извлекаю данные таблиц с помощью BeautifulSoup с этого веб-сайта: https://afltables.com/afl/stats/teams/adelaide/2018_gbg.html
Существует множество таблиц с уникальным идентификатором таблицы, которые я смог извлечь, используя следующее:
from bs4 import BeautifulSoup
from selenium import webdriver
stat_dict={'Disposals' : 'sortableTable0',
'Kicks' : 'sortableTable1',
'Marks' : 'sortableTable2',
'Handballs' : 'sortableTable3',
'Goals' : 'sortableTable4',
'Behinds' : 'sortableTable5',
'Hitouts' : 'sortableTable6',
'Tackles' : 'sortableTable7',
'Rebounds' : 'sortableTable8',
'Inside50s' : 'sortableTable9',
'Clearances': 'sortableTable10',
'Clangers' : 'sortableTable11',
'FreesFor' : 'sortableTable12',
'FreesAgainst' : 'sortableTable13',
'ContestedPosessions' : 'sortableTable14',
'UncontestedPosesseions' : 'sortableTable15',
'ContestedMarks' : 'sortableTable16',
'MarksInside50' : 'sortableTable17',
'OnePercenters' : 'sortableTable18',
'Bounces' : 'sortableTable19',
'GoalAssists' : 'sortableTable20',
'Timeplayed' : 'sortableTable21'}
driver = webdriver.Firefox(executable_path='...')
url="https://afltables.com/afl/stats/teams/adelaide/2018_gbg.html"
driver.get(url)
html = driver.page_source
soup = BeautifulSoup(html, "lxml")
stat_wanted='Disposals'
table = soup.find_all('table', {'id':stat_dict[stat_wanted]})
Из таблицы, которую я извлек, я хотел бы сделать эквивалент кода ниже, который работает, если я использую soup.find ('tbody').Я знаю, что это, вероятно, не самый лучший или самый красивый способ достижения результата, но я просто играю с кодом, чтобы узнать, как все это работает.
def get_disposals(team_lower_case, nplayers, nrounds):
list=[]
page=requests.get("https://afltables.com/afl/stats/teams/" +str(team_lower_case) +"/2018_gbg.html")
soup=BeautifulSoup(page.content, 'html.parser')
filter=soup.find('tbody')
for var in filter.find_all('tr'):
columns=var.find_all('td')
for val in columns:
list.append(val.get_text())
columns=['PlayerName']
for n in range(1,nrounds+1):
columns.append('R'+str(n))
df=pd.DataFrame(np.array(list).reshape(nplayers,nrounds+1), columns=columns)
return df
get_disposals("fremantle",30,8)
Я пробовал кодниже, чтобы получить текст из всех тегов, но результат не повторяет то, что я смог достичь при извлечении конкретной таблицы в первом фрагменте кода.
for tr in table:
zxc=tr.find_all('td')
print(zxc)
for var in zxc:
list=[]
list.append(var.get_text())
print(list)
Но это приводит к просто спискутегов и их содержимого, а не содержимого, которое вы ожидаете, если get_text работает так, как мне бы хотелось.