【发布时间】:2020-05-09 21:33:27
【问题描述】:
我有几个问题正在尝试解决。首先,我试图弄清楚如何获得每个球员的“国际常规赛季统计 - 每场比赛”和“国际常规赛季统计 - 高级统计”表格。现在我正在尝试与国际合作,但最终,我希望他们彼此相邻。但是,每个玩家的桌号可能不同,因此 Carlos Delfino 是 [18],但 Fabricio Oberto 将其设为 [11]。因为这个我得到的错误是'''IndexError: list index out of range``` 另外,我想把球员的名字放在他打过的每个赛季的每一行。我也想为没有桌子的玩家(姚明)留一个空白行。
import requests
from bs4 import BeautifulSoup
playernames=['Carlos Delfino', 'Fabricio Oberto', 'Yao Ming']
for name in playernames:
fname=name.split(" ")[0]
lname=name.split(" ")[1]
url="https://basketball.realgm.com/search?q={}+{}".format(fname,lname)
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
table = (soup.find_all('table', attrs={'class': 'tablesaw', 'data-tablesaw-mode-exclude': 'columntoggle'})[18]).find_next('tbody')
print(table)
columns = ['Season', 'Team', 'League', 'GP', 'GS', 'TS%', 'eFG%', 'ORB%', 'DRB%', 'TRB%', 'AST%', 'TOV%', 'STL%', 'BLK%', 'USG%', 'Total S%', 'PPR', 'PPS', 'ORtg', 'DRtg', 'PER']
df = pd.DataFrame(columns=columns)
trs = table.find_all('tr')
for tr in trs:
tds = tr.find_all('td')
row = [td.text.replace('\n', '') for td in tds]
df = df.append(pd.Series(row, index=columns), ignore_index=True)
df.to_csv('international players.csv', index=False) ```
【问题讨论】:
标签: python web-scraping beautifulsoup datatables