爬取英雄联盟官网攻略中心的全部位置峡谷排位的英雄胜率,并且把爬取的数据写入到csv文件。然后对爬取的数据进行处理,获取胜率最高的十个英雄,然后用柱状图的形式进行可视化化显示(英雄和胜率),要求用Pyecharts方法进行可视化,不使用pandas
时间: 2024-04-02 11:36:55 浏览: 101
英雄联盟游戏房间创建工具.zip
好的,我来帮您完成这个任务。首先需要安装 requests 和 pyecharts 库,您可以使用以下命令进行安装:
```python
!pip install requests pyecharts
```
接下来,可以使用 requests 库访问英雄联盟攻略中心网站获取数据,并使用 csv 模块将数据写入 CSV 文件:
```python
import requests
import csv
# 请求头信息
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
url = 'https://lol.qq.com/data/info-heros.shtml'
# 发送请求并获取响应
response = requests.get(url, headers=headers)
# 解析HTML文档获取英雄胜率数据
win_rate_dict = {}
for tr in response.text.split('<tr>')[1:]:
# 获取英雄名称和胜率
tds = tr.split('<td>')
name = tds[1].split('</td>')[0]
win_rate = float(tds[4].split('</td>')[0].strip('%'))
# 将英雄名称和胜率存储到字典中
win_rate_dict[name] = win_rate
# 将英雄胜率数据写入CSV文件
with open('win_rate.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(['英雄', '胜率'])
for name, win_rate in win_rate_dict.items():
writer.writerow([name, win_rate])
```
接下来,可以使用 Pyecharts 库对数据进行可视化处理:
```python
from pyecharts import options as opts
from pyecharts.charts import Bar
# 读取CSV文件中的数据
with open('win_rate.csv', 'r', encoding='utf-8') as f:
reader = csv.reader(f)
next(reader) # 跳过表头
data = [(name, float(win_rate)) for name, win_rate in reader]
# 按照胜率对英雄进行排序
data = sorted(data, key=lambda x: x[1], reverse=True)
# 获取胜率最高的10个英雄
top_n = 10
x_data = [d[0] for d in data[:top_n]]
y_data = [d[1] for d in data[:top_n]]
# 创建柱状图对象
bar = (
Bar()
.add_xaxis(x_data)
.add_yaxis('胜率', y_data)
.set_global_opts(
title_opts=opts.TitleOpts(title='英雄胜率排行榜'),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=15)),
yaxis_opts=opts.AxisOpts(min_=50, max_=60),
)
)
# 渲染图表并保存到HTML文件
bar.render('win_rate.html')
```
这样就可以得到一个名为 win_rate.html 的柱状图文件,用浏览器打开即可查看效果。
阅读全文