我用多线程一键爬取了:所有王者荣耀英雄皮肤壁纸

大家好,我是小瑜~

今天我们一起来爬取一下王者荣耀英雄的皮肤壁纸!

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

代码下载

如果有朋友对本文代码感兴趣,私信小瑜后台回复"王者荣耀",即可获得全部代码!


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容