英雄联盟Python爬虫

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了英雄联盟Python爬虫相关的知识,希望对你有一定的参考价值。

参考技术A

英雄联盟Python爬虫

英雄主界面qq https://lol.qq.com/data/info-heros.shtml

1.英雄爬取

https://lol.qq.com/data/info-heros.shtml

get方法获取指定英雄信息。

https://lol.qq.com/data/info-heros.shtml?id=xxx

id=xxx

2.JS获取所有英雄信息

效果:

http://www.wanplus.com/lol/playerstats

用到了csrf-token,post请求需要携带set-cookies 中的csrf-token即可。

http://lol.admin.pentaq.com/

没有任何反爬和csrf-token认证:

http://www.op.gg/champion/statistics

采用BeautifulSoup 即可。

1.获取对应英雄url 列表,函数get_url_list()

2.下载对应的图片保存到文件夹download()

3.main()开启多线程执行爬取任务

教你用python爬英雄联盟官网:①掌握爬虫技术;②Python数据可视化

大家好,我是明月十四桥!!

擅长领域: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黑科技。

求点赞、求评论、求收藏!!

以上是关于英雄联盟Python爬虫的主要内容,如果未能解决你的问题,请参考以下文章

英雄联盟Python爬虫

教你用python爬英雄联盟官网:①掌握爬虫技术;②Python数据可视化

教你用python爬英雄联盟官网:①掌握爬虫技术;②Python数据可视化

Python高级应用程序设计任务要求

爬虫小程序(爬取英雄联盟的英雄皮肤)

NodeJS 爬虫爬取LOL英雄联盟的英雄信息,superagent+cheerio+async