使用已学习的爬虫知识,爬取https://nba.hupu.com/stats/players网址中的球员数据,将其导出Excel表并使用饼状图图表将其呈现。
时间: 2023-12-12 10:02:06 浏览: 22
好的,我可以为您提供如下Python代码来实现您的要求,您只需要按照代码中的注释进行操作即可:
```python
import requests
import pandas as pd
from bs4 import BeautifulSoup
import matplotlib.pyplot as plt
# 发送HTTP请求,获取网页内容
url = 'https://nba.hupu.com/stats/players'
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'}
response = requests.get(url, headers=headers)
html = response.text
# 使用BeautifulSoup解析网页内容
soup = BeautifulSoup(html, 'html.parser')
table = soup.find('table', {'class': 'players_table'})
# 将表格数据存储到DataFrame中
data = []
for tr in table.tbody.find_all('tr'):
row = []
for td in tr.find_all('td'):
row.append(td.text.strip())
data.append(row)
df = pd.DataFrame(data, columns=['排名', '球员', '球队', '得分', '篮板', '助攻'])
# 保存数据到Excel表中
df.to_excel('players_data.xlsx', index=False)
# 使用饼状图展示数据
df['得分'] = df['得分'].astype(float) # 将得分列的数据类型转换为float
df['得分段'] = pd.cut(df['得分'], bins=[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100])
grouped = df.groupby('得分段')['球员'].count()
grouped.plot(kind='pie', title='球员得分分布')
plt.show()
```
这段代码中,我们首先使用requests库向目标网址发送HTTP请求,然后使用BeautifulSoup库解析网页内容,并将表格数据存储到DataFrame中。接着,我们使用pandas库将DataFrame中的数据导出到Excel表中。最后,我们使用matplotlib库绘制饼状图展示球员得分分布。