爬取英雄联盟官网所有英雄信息(id,name,title,hp,mp) 并且把爬取的数据写入到csv文件。然后对爬取的数据进行处理 获取初始血量top10的英雄名称,用opts和Bar的方法以柱状图的形式进行可视化化显示(血量/名称),不使用pandas库
时间: 2024-03-19 20:45:03 浏览: 132
好的,我会为您解答。首先,您需要安装 requests 和 BeautifulSoup 库来进行网页爬取和数据解析。请使用以下命令进行安装:
```
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 matplotlib import pyplot as plt
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]
plt.bar(names, hp)
plt.xticks(rotation=45)
plt.xlabel('英雄名称')
plt.ylabel('初始血量')
plt.title('英雄联盟初始血量前十名')
plt.show()
```
以上代码会生成一个柱状图,其中包含初始血量前十名的英雄名称和血量。您可以根据需要修改图表的样式和标题。
阅读全文