大家好,我是小瑜~
今天我们一起来爬取一下王者荣耀英雄的皮肤壁纸!
01
页面分析
首先我们打开王者荣耀官网,鼠标悬停在游戏资料上,等待出现窗口,然后点击英雄介绍。
进入到所有英雄界面,我们按F12,打开开发者模式,然后刷新页面,我们在name发现一个名为herolist.json的文件,里面存储着英雄的信息。
此时我们发现这个数据是乱码的,那可能存在两种原因,一个是因为我的电脑解码问题,另一个是字体加密,我们用PyCharm对这个数据进行一下请求,
我们发现是我们浏览器的解码问题,字体并没有加密,并且我们观察数据发现,cname存储的是英雄名字,skin_name存储的是皮肤名称。
我们此时在随机点开一个英雄,进入到单个英雄界面,我们按F12,打开开发者模式,然后刷新页面,我们在name发现了,存储图片的页面,然后观察他们的URL
http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/105/105-bigskin-2.jpg
http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/106/106-bigskin-2.jpg
http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/107/107-bigskin-2.jpg
我们发现,每个英雄皮肤的URL组成为:
http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{ename}/{ename}-bigskin-{i +1}.jpg
既然图片的URL已经构造好了,那我们就直接用Requests对URL发起请求就好了!
02
数据获取
爬虫部分代码:
os.mkdir(f'{cname}')
ename = i['ename']
cname = i['cname']
skin_names = i['skin_name']
skin_name = skin_names.split('|')
foriinrange(len(skin_name)):
url =f'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{ename}/{ename}-bigskin-{i +1}.jpg'
r = requests.get(url, headers=headers)
withopen(f'K:\小项目\多线程爬虫\{cname}\{skin_name[i]}.jpg','ab')asf:
f.write(r.content)
效果展示
03
代码下载
如果有朋友对本文代码感兴趣,私信小瑜后台回复"王者荣耀",即可获得全部代码!