爬取英雄联盟官网攻略中心的全部位置峡谷排位的英雄胜率,并且把爬取的数据写入到csv文件。然后对爬取的数据进行处理,获取胜率最高的十个英雄,然后用柱状图的形式进行可视化化显示(英雄和胜率),要求用Pyecharts方法进行可视化
时间: 2024-03-22 07:39:12 浏览: 94
好的,这个任务我们可以分成两个部分来完成,第一部分是爬取数据并将其写入csv文件,第二部分是对数据进行处理并进行可视化。
第一部分:爬取数据并写入csv文件
```python
import requests
import csv
from bs4 import BeautifulSoup
url = "https://lol.qq.com/data/info-heros.shtml"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
# 发送请求,获取网页内容
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.content, "html.parser")
# 获取英雄胜率数据
data = []
table = soup.find("table", class_="data_table")
for tr in table.tbody.find_all("tr"):
tds = tr.find_all("td")
hero_name = tds[0].text.strip()
win_rate = tds[3].text.strip()
data.append([hero_name, win_rate])
# 将数据写入csv文件
with open("hero_win_rate.csv", "w", encoding="utf-8", newline="") as csvfile:
writer = csv.writer(csvfile)
writer.writerow(["英雄名称", "胜率"])
for item in data:
writer.writerow(item)
```
第二部分:对数据进行处理并可视化
```python
import pandas as pd
from pyecharts.charts import Bar
from pyecharts import options as opts
# 读取csv文件中的数据
df = pd.read_csv("hero_win_rate.csv")
# 对数据进行排序,获取胜率最高的十个英雄
df = df.sort_values("胜率", ascending=False).head(10)
# 使用pyecharts进行可视化
bar = (
Bar()
.add_xaxis(df["英雄名称"].tolist())
.add_yaxis("胜率", df["胜率"].tolist())
.set_global_opts(title_opts=opts.TitleOpts(title="英雄联盟英雄胜率排行榜"))
)
bar.render("hero_win_rate.html")
```
运行以上代码后,会在当前目录下生成一个名为"hero_win_rate.html"的文件,打开它可以看到可视化的柱状图。注意需要安装pyecharts库和pandas库,可以使用pip进行安装。
阅读全文