大家好,我是欧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 英雄请求
分析请求链接:
http://pvp.qq.com/web201605/js/herolist.json
细心的朋友会注意到网页返回数据中cname/skin_name/title是乱码,初步怀疑有可能是网页编码格式的问题,我们看一下返回的网页编码:果然没错,Response Headers中的content-encoding编码是gzip,我们构造请求在pycharm中运行看一下,代码如下:
# 导入模块 import requests # 获取网页数据 url = 'http://pvp.qq.com/web201605/js/herolist.json' # 添加请求头 headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 QIHU 360SE'} # 发送网页请求 r = requests.get(url, headers=headers) hero_list = r.json() print(hero_list)
请求返回编码“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)
结果如下:
如果需要本文资源(代码+皮肤),请在公众号后台回复“王者荣耀”。以上就是本期为大家整理的全部内容了,赶快练习起来吧,喜欢的朋友可以点赞、收藏也可以分享到朋友圈让更多人知道
推荐阅读
技巧 | Python 字典用法详解(超全)
技巧 | Python 列表经典使用技巧
技巧 | 20个Pycharm最实用最高效的快捷键(动态展示)
可视化 | 动起来的中国大学排名,看看你的母校在哪里
可视化 | Python时间序列化NBA球星赛季数据
可视化 | Python制作最炫3D可视化地图微信公众号 “Python当打之年” ,每天都有python编程技巧推送,希望大家可以喜欢