既然已经成功获取Understat网站的数据,就可以去获取Fbref网站的数据啦。
这里是球员的一些个人信息,以及赛季的平均数据。
比如全名、国家、位置、俱乐部、联赛、年龄、出生年份、上场时间、得分数据等等。
因为网页的数据是表格形式,所以直接使用pandas的read_html函数,解析表格爬取数据。
这个网站需要取消一下证书验证,要不然连接不成功。
# 全局取消证书验证
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
获取球员的相关数据。
def readfromhtml(filepath):
# 选择第二个表格
df = pd.read_html(filepath)[0]
column_lst = list(df.columns)
for index in range(len(column_lst)):
column_lst[index] = column_lst[index][1]
df.columns = column_lst
df.drop(df[df['Player'] == 'Player'].index, inplace=True)
df = df.fillna('0')
df.set_index('Rk', drop=True, inplace=True)
try:
df['Comp'] = df['Comp'].apply(lambda x: ' '.join(x.split()[1:]))
df['Nation'] = df['Nation'].astype(str)
df['Nation'] = df['Nation'].apply(lambda x: x.split()[-1])
except:
print('Error in uploading file:' + filepath)
finally:
df = df.apply(pd.to_numeric, errors='ignore')
return df
# 获取2020-2021欧洲五大联赛球员数据
df_fbref = readfromhtml('https://fbref.com/en/comps/Big5/shooting/players/Big-5-European-Leagues-Stats')
print(df_fbref)
得到结果如下。