爬取英雄联盟官网所有英雄信息(id,name,title,hp,mp) 并且把爬取的数据写入到csv文件。然后对爬取的数据进行处理 获取初始血量top10的英雄名称,用opts和Bar的方法以柱状图的形式进行可视化化显示(血量/名称),不使用pandas库,不使用matplotlib
时间: 2024-03-19 15:45:06 浏览: 50
怎么把数据库表中的数据一行一行的写入文本文件,并且每个字段加上分隔符
4星 · 用户满意度95%
好的,我会为您解答。同样地,您也需要安装 requests 和 BeautifulSoup 库来进行网页爬取和数据解析。请使用以下命令进行安装:
```python
pip install requests
pip install beautifulsoup4
```
接下来,您可以使用以下代码爬取英雄联盟官网所有英雄信息,并将其写入到 csv 文件中:
```python
import requests
from bs4 import BeautifulSoup
import csv
url = 'https://www.leagueoflegends.com/zh-cn/champions/'
r = requests.get(url)
soup = BeautifulSoup(r.content, 'html.parser')
table = soup.find('table', {'class': 'champion-overview__table'})
with open('lol_heroes.csv', 'w', encoding='utf-8-sig', newline='') as f:
writer = csv.writer(f)
writer.writerow(['id', 'name', 'title', 'hp', 'mp'])
for row in table.find_all('tr')[1:]:
columns = row.find_all('td')
hero_id = columns[0].text.strip()
name = columns[1].find('a').text.strip()
title = columns[1].find('div', {'class': 'champion-list__title'}).text.strip()
hp = columns[2].text.strip()
mp = columns[3].text.strip()
writer.writerow([hero_id, name, title, hp, mp])
```
以上代码会生成一个名为 `lol_heroes.csv` 的 csv 文件,其中包含所有英雄的 id、名称、称号、血量和法力值。接下来,您可以使用以下代码对数据进行处理,并以柱状图的形式进行可视化:
```python
import csv
from pyecharts import options as opts
from pyecharts.charts import Bar
heroes = []
with open('lol_heroes.csv', 'r', encoding='utf-8-sig') as f:
reader = csv.reader(f)
next(reader)
for row in reader:
heroes.append({'name': row[1], 'hp': int(row[3].replace(',', ''))})
heroes = sorted(heroes, key=lambda x: x['hp'], reverse=True)[:10]
names = [hero['name'] for hero in heroes]
hp = [hero['hp'] for hero in heroes]
bar = (
Bar()
.add_xaxis(names)
.add_yaxis('血量', hp)
.set_global_opts(
title_opts=opts.TitleOpts(title='英雄联盟初始血量前十名'),
yaxis_opts=opts.AxisOpts(name='初始血量'),
xaxis_opts=opts.AxisOpts(name='英雄名称', axislabel_opts={'rotate': 45})
)
)
bar.render_notebook()
```
以上代码会生成一个柱状图,其中包含初始血量前十名的英雄名称和血量。我们使用了 Pyecharts 库来实现图表的绘制,其中 Bar 类表示柱状图,add_xaxis 方法用来添加 x 轴数据,add_yaxis 方法用来添加 y 轴数据,set_global_opts 方法用来设置全局选项,例如标题、坐标轴名称等。最后,我们使用 render_notebook 方法将图表显示在 Jupyter Notebook 中。
注意,您需要安装 Pyecharts 库来运行以上代码。您可以使用以下命令进行安装:
```python
pip install pyecharts
```
阅读全文