爬虫 | Python送你王者荣耀官网全套皮肤

大家好,我是欧K。

王者荣耀这款手游,想必大家都玩过或听过,虽已运营六年,但热度依然不减当年,各种英雄配上各式各样的皮肤,甚是精美,今天就教大家如何利用几行Python代码轻松爬取王者荣耀官网全套皮肤~~文末有已经下载好的全套皮肤获取方式,喜欢的可以收下哦

1. 网页分析

首先打开王者荣耀官网,点击英雄资料: F12查看网页源码,可以看到所有英雄都在一个无序列表中,比如第一个司空震,在第一个

    中,依次类推,点击列表中的.shtml链接即可进入到对应英雄的详情页,我们的皮肤就在详情页中: 任意选择一个英雄,这里我们选择孙悟空,进入到详情页中,F12查看网页源码,点击每个皮肤(这里点击前4个),我们可以看到在Network中出现了“167-bigskin-5.jpg”、“167-bigskin-6.jpg”、“167-bigskin-7.jpg”、“167-bigskin-8.jpg”四个图片文件: 分析得出167是.shtml链接的英雄编号,5/6/7/8依次对应前四个皮肤: 这样就完了吗? 坑已备好,You jump? I jump!!! 这里有没有注意到一个问题,要获取最终的英雄皮肤,需要知道两个关键参数英雄编号和皮肤编号,英雄编号在首页可以获取,但是每个英雄具体有几个皮肤我们并不知道 带着这个疑问,我们往下走… 2. 数据获取 2.1 英雄请求 果然没错,Response Headers中的content-encoding编码是gzip,我们构造请求在pycharm中运行看一下,代码如下: 请求返回编码“utf-8”,我们直接打印出返回信息: 返回信息还有意外收获,ename(英雄编号)、skin_name(皮肤名称),有了皮肤名称不就相当于有了皮肤编号吗,香不香!!! 2.2 数据解析 主要获取ename/skin_name: for hero in range(len(hero_list)): try: # 英雄编号 hero_num = hero_list[hero][ename] # 英雄名称 hero_name = hero_list[hero][cname] # 皮肤列表 skin_name = hero_list[hero][skin_name].split(|) # 统计皮肤数量 skin_count = len(skin_name) print(英雄名称:,hero_name, 皮肤数量:,skin_count) except: print(获取英雄信息异常!) continue 遍历皮肤链接,请求皮肤: # 遍历每一个英雄获取皮肤图片 for i in range(1, skin_count + 1): try: # 皮肤网址 url = http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{}/{}-bigskin-{}.jpg.format(hero_num,hero_num,i) # 获取图片信息 picture = requests.get(url).content except: print(获取皮肤异常!) continue 3. 数据保存 在代码路径下新建pictures文件夹: with open(pictures/{}-{}.jpg.format(hero_name,skin_name[i - 1]), wb) as f: f.write(picture)
经验分享 程序员 微信小程序 职场和发展