爬取虎扑NBA球员信息+可视化分析代码
时间: 2023-10-01 15:06:28 浏览: 252
基于python的NBA球员数据可视化分析源码+文档.zip
5星 · 资源好评率100%
以下是爬取虎扑NBA球员信息并进行可视化分析的Python代码:
```
import requests
from bs4 import BeautifulSoup
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 设置请求头
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
# 请求网页
url = "https://nba.hupu.com/players"
response = requests.get(url, headers=headers)
# 解析网页
soup = BeautifulSoup(response.content, 'html.parser')
table = soup.find('table', class_='players_table')
# 获取表格列名
columns = []
for th in table.find_all('th'):
columns.append(th.text.strip())
# 获取表格数据
data = []
for tr in table.find_all('tr')[1:]:
row = []
for td in tr.find_all('td'):
row.append(td.text.strip())
data.append(row)
# 生成DataFrame
df = pd.DataFrame(data, columns=columns)
# 数据清洗
df['球队'] = df['球队'].apply(lambda x: x.split('\n')[0])
df['位置'] = df['位置'].apply(lambda x: x.split('\n')[0])
df['出生日期'] = df['出生日期'].apply(lambda x: x.split('\n')[0])
df['身高'] = df['身高'].apply(lambda x: x.split('\n')[0])
df['体重'] = df['体重'].apply(lambda x: x.split('\n')[0])
df['经验'] = df['经验'].apply(lambda x: x.split('\n')[0])
df['薪资'] = df['薪资'].apply(lambda x: x.replace(',', ''))
# 数据类型转换
df['身高'] = df['身高'].astype(float)
df['体重'] = df['体重'].astype(float)
df['薪资'] = df['薪资'].astype(float)
# 可视化分析
sns.set(style="whitegrid")
# 球员数量分布
sns.countplot(x="位置", data=df)
# 球员薪资分布
sns.histplot(df['薪资'], kde=False)
# 球员身高、体重关系
sns.scatterplot(x="身高", y="体重", data=df)
plt.show()
```
代码解释:
1. 首先导入需要使用的库。
2. 设置请求头,发起GET请求,获取网页的HTML文本。
3. 使用BeautifulSoup解析HTML文本,找到目标表格。
4. 获取表格的列名和数据。
5. 将数据存储到Pandas的DataFrame中。
6. 进行数据清洗和类型转换。
7. 使用Seaborn进行可视化分析,绘制球员数量分布、球员薪资分布和球员身高、体重关系图。
8. 显示图形。
注意:爬取网页信息需要遵守相关规定和法律法规。请勿非法爬取网站信息。
阅读全文