我正在使用BeautifulSoup从这个网站提取表数据:https://afltables.com/afl/stats/teams/adelaide/2018_gbg.html
有许多具有唯一表id的表,我可以使用以下方法提取这些表:
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]})
从我提取的表中,我想做与下面代码相同的代码,如果我使用汤。找('tbody')。我知道这可能不是实现结果的最好或最漂亮的方法,但我只是在玩玩代码来了解它是如何工作的。在
^{pr2}$我尝试了下面的代码从所有标记中获取文本,但结果并没有复制在第一段代码中提取特定表时所能达到的效果。在
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像我所希望的那样工作的话。在
您可能会发现以下方法更简单一些:
这将为您提供pandas数据帧的列表。每个表包含每个表的所有信息。例如,第一个包含
^{pr2}$Disposals
:然后你可以用熊猫来处理数据。在
相关问题 更多 >
编程相关推荐