大家好,我是明月十四橋!!
擅長領域:python黑科技、大資料后端研發、資料倉庫
今日重點:
① 掌握爬蟲技術,體會python爬蟲流程,可見即可爬;
② 學會使用python資料可視化,
有問題的小伙伴歡迎在文末評論,點贊、收藏是對我最大的支持!!!
目錄
一、緣起
二、爬蟲
三、畫圖分析
3.1 物理攻擊
3.2 魔法攻擊
3.3 防御能力
3.4 難度系數
3.5 能力矩陣圖
四、全部代碼
一、緣起
事情是這樣的:
小伙伴:橋哥,橋哥,你知道哪個英雄最難玩嗎?
橋哥:陷入沉思.........雖然心中已經有那個人選,像兒童杰、提款雞 😋 ,可是到底哪個最難呢..... 互聯網時代用資料說話,我們去看看官方資料怎么說吧,,,
二、爬蟲
第一步:
首先,橋哥來到了英雄聯盟官網,雖然早已提不動刀,但看著官網還是不免懷念起大學時代~
經過觀察:發現這個 【英雄】、【物品】、【符文】等,都可以爬下來分析一番,,

第二步:
Q:我們的需求是什么?
A:找到官網的資料資料,看看哪幾個英雄最難,
首先,來到「官網」>>>『英雄聯盟首頁』 >>> 『游戲資料』 >>>『英雄』.
我們看到了所有英雄,隨便點開一個瞅瞅~
就你了,詭術妖姬!

第三步:
1、打開開發者模式,點擊左邊的箭頭,選擇想查看的元素,
2、可以看到的資料:英雄的【物理攻擊】【魔法攻擊】【防御能力】【上手難度】
詭術妖姬:
物理攻擊:☆
魔法攻擊:☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆☆ ☆
防御能力:☆ ☆ ☆ ☆
難度系數 :☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆
ok,這就是我想要的,
ps.還可以爬所有的皮膚、英雄背景知識,攻略,技能介紹等等

第四步:回圈遍歷
英雄串列:https://lol.qq.com/data/info-heros.shtml
三、畫圖分析
3.1 物理攻擊
物理攻擊最低的英雄(1級): 正義巨像,詭術妖姬,墮落天使,冰晶鳳凰,天啟者,遠古巫靈,暮光星靈,巖雀,萬花通靈
物理攻擊最高的英雄(10級): 無極劍圣,蠻族之王,暗夜獵手,無雙劍姬,影流之鐮,戲命師,逆羽

3.2 魔法攻擊
魔法攻擊最低的英雄(1級): 戰爭女神,暗夜獵手,德瑪西亞之力,刀鋒之影,放逐之刃,榮耀行刑官,諾克薩斯之手,影流之鐮,影流之主,逆羽,殘月之肅,血港鬼影,腕豪
魔法攻擊最高的英雄(10級): 黑暗之女,詭術妖姬,符文法師,死亡頌唱者,冰晶鳳凰,邪惡小法師,遠古巫靈,機械先驅,虛空之眼,含羞蓓蕾

3.3 防御能力
防御能力最低的英雄(1級): 暗夜獵手,魔法貓咪,萬花通靈
防御能力最高的英雄(10級): 正義巨像,披甲龍龜

3.4 難度系數
難度系數最低的英雄(1級): 暗夜獵手,魔法貓咪,萬花通靈
難度系數最高的英雄(10級): 正義巨像,披甲龍龜

3.5 能力矩陣圖
ps.以安妮、卡爾瑪為例!

四、全部代碼
# encoding: utf-8
import requests
import json
from pyecharts.charts import Pie
from pyecharts import options as opts
from pyecharts.charts import Radar
# 獲取官網英雄資料
def request(url):
headers = { "User-Agent": "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)",}
res = requests.get(url, headers=headers)
return res
def data_analysis(title,data):
res = {}
for hero in data:
if hero['%s'%title] not in res:
res[hero['%s'%title]] = hero['name']
else:
res[hero['%s'%title]] = res[hero['%s'%title]] + "," + hero['name']
print(res)
return res
def draw_pie(title, attack):
columns,data = [],[]
for k, v in attack.items():
columns.append(title + k + '級')
data.append(len(v.split(',')))
if k in ['1','10']:
print(k,v)
pie = (
Pie()
# 以[(lable,value),(lable,value),(lable,value)......]形式傳入資料,
.add(title, list(z for z in zip(columns, data)))
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
)
pie.render('%s.html'%title)
def draw_Radar():
from pyecharts.charts import Radar
radar = Radar()
# //由于雷達圖傳入的資料得為多維資料,所以這里需要做一下處理
radar_data = [[10, 10, 10, 10, 10]]
radar_data1 = [[2, 10, 3, 6, 3]]
radar_data2 = [[1, 8, 7, 5, 8]]
# //設定column的最大值,為了雷達圖更為直觀,這里的月份最大值設定有所不同
schema = [
("物理", 100), ("魔法", 10), ("防御", 10),("難度", 10),("喜好", 10)
]
# //傳入坐標
radar.add_schema(schema)
radar.add("滿分", radar_data)
# //一般默認為同一種顏色,這里為了便于區分,需要設定item的顏色
radar.add("安妮", radar_data1, color="#E37911")
radar.add("卡爾瑪", radar_data2, color="#1C86EE")
radar.render()
if __name__ == '__main__':
url = "https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js"
res = request(url)
hero_message = json.loads(res.text)['hero']
# print(hero_message)
# 物理
attack = data_analysis('attack', hero_message)
draw_pie('物理', attack)
# 防御
defense = data_analysis('defense', hero_message)
draw_pie('防御', defense)
# 魔法
magic = data_analysis('magic', hero_message)
draw_pie('魔法', magic)
# 難度
difficulty = data_analysis('difficulty', hero_message)
draw_pie('難度', difficulty)
draw_Radar()

加入我們 ↓ ↓ ↓

【推薦閱讀】
資料倉庫專欄:數倉方法論、實戰經驗、面試真題 >> https://blog.csdn.net/weixin_39032019/category_8871528.html
Python專欄:Python黑科技:爬蟲、演算法、小工具 >> https://blog.csdn.net/weixin_39032019/category_8974792.html
大資料集錦專欄:面試真題、開發經驗、調優策略 >> https://blog.csdn.net/weixin_39032019/category_11048805.html
我是橋哥,專注分享大資料知識體系 & Python黑科技,
求點贊、求評論、求收藏!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/286369.html
標籤:其他
