python爬取和平精英⽪肤_20⾏Python代码爬取王者荣耀全英
雄⽪肤
引⾔
王者荣耀⼤家都玩过吧,没玩过的也应该听说过,作为时下最⽕的⼿机MOBA游戏,咳咳,好像跑题了。我们今天的重点是爬取王者荣耀所有英雄的所有⽪肤,⽽且仅仅使⽤20⾏Python代码即可完成。
准备⼯作
爬取⽪肤本⾝并不难,难点在于分析,我们⾸先得得到⽪肤图⽚的url地址,话不多说,我们马上来到王者荣耀的官⽹:
我们点击英雄资料,然后随意地选择⼀位英雄,接着F12打开调试台,到英雄原⽪肤的图⽚地址:
接着,我们切换⼀下英雄的⽪肤,会发现图⽚地址没有明显的变化,只是最后的数字序号改变了,我们将两个⽪肤图⽚的地址放在⼀起⽐较⼀下:
我们可以猜测,对于同⼀个英雄的⽪肤图⽚地址,仅仅是最后的数字序号不同,为了证实我们的猜想,
我们可以继续出⼀个英雄的全⽪肤图⽚,⼀个⽪肤多⼀点的,例如我这⾥的是孙尚⾹,将它的所有⽪肤图⽚地址放在⼀起⽐较:
由此我们得出结论,同⼀个英雄的⽪肤图⽚路径从1开始依次递增,我们再来看看不同英雄之间是如何区分的。会发现,不管⽪肤图⽚如何改变,浏览器上⽅的地址始终是不变的,所以我们将两个不同英雄的url地址放到⼀起⽐较⼀下:
乍⼀看,似乎没有什么规律,但我们要从这⾥发现⼀点,就是最后的数字其实控制的是哪个英雄,我们暂且认为它是英雄的编号,可不幸的是,英雄编号之间好像没有什么规律,不⽤着急,我们再到官⽹上线索。
在英雄资料界⾯,我们打开F12调试台,通过抓取⽹络请求,我发现了⼏个⽂件:
aggressively音标点击⽹络,然后点击XHR,就可以看到这⼏个⽂件,看到⽂件的名字⼤家应该就清楚了,这些⽂件存储的就是英雄列表信息,我们点击查
看⼀下:
没错,这⾥存储的就是英雄信息,包括英雄的名字,英雄编号等等其它信息,我们可以试试这些信息的准确性,例如⼩乔的ename,也就是英雄编号为106,所以按照之前的想法,英雄⼩乔的详情地址
应为:王者荣耀⼩乔-王者荣耀官⽹⽹站-腾讯游戏
经过尝试后发现确实如此。
到这⾥,准备⼯作就完成了,其实进⾏到这⾥,整个⼯程就完成了⼀半了,接下来就是代码的实现了。
代码实现
⾸先我们创建⼀个Python⽂件,然后导⼊os和requests模块。
那么我们⾸先就要通过这个地址获取到英雄列表信息的json数据,然后解析json数据,将有⽤的信息提取出来:
url = 'pvp.qq/web201605/js/herolist.json'
herolist = (url) # 获取英雄列表json⽂件
herolist_json = herolist.json() # 转化为json格式
hero_name = list(map(lambda x: x['cname'], herolist.json())) # 提取英雄的名字
hero_number = list(map(lambda x: x['ename'], herolist.json())) # 提取英雄的编号
这样我们就获取到了英雄名字和编号,可以输出测试⼀下:
拿到了英雄编号之后,事情就变得很简单了,只需拼接⼀下url地址即可:
javascript对象类型# 下载图⽚
python解析json文件def downloadPic():
i = 0
for j in hero_number:
# 创建⽂件夹
os.mkdir("C:\\Users\\Administrator\\Desktop\\wzry\\" + hero_name[i])
# 进⼊创建好的⽂件夹
os.chdir("C:\\Users\\Administrator\\Desktop\\wzry\\" + hero_name[i])
i += 1
for k in range(10):
# 拼接url
onehero_link = 'img/images/yxzj/img201606/skin/hero-info/' + str(j) + '/' + str(
j) + '-bigskin-' + str(k) + '.jpg'
im = (onehero_link) # 请求url
if im.status_code == 200:postman要钱吗
open(str(k) + '.jpg', 'wb').t) # 写⼊⽂件
实现⾮常地简单,代码注释也已经写得很清楚了,有了这个函数之后,我们只需调⽤⼀下,就可以下载图⽚了,整个程序的完整代码如下:import os
import requests
url = 'pvp.qq/web201605/js/herolist.json'
herolist = (url) # 获取英雄列表json⽂件
herolist_json = herolist.json() # 转化为json格式
hero_name = list(map(lambda x: x['cname'], herolist.json())) # 提取英雄的名字高薪php程序员招聘
hero_number = list(map(lambda x: x['ename'], herolist.json())) # 提取英雄的编号
# 下载图⽚
def downloadPic():
i = 0
for j in hero_number:
# 创建⽂件夹
os.mkdir("C:\\Users\\Administrator\\Desktop\\wzry\\" + hero_name[i])
# 进⼊创建好的⽂件夹
os.chdir("C:\\Users\\Administrator\\Desktop\\wzry\\" + hero_name[i])
i += 1
for k in range(10):
# 拼接url
onehero_link = 'img/images/yxzj/img201606/skin/hero-info/' + str(j) + '/' + str(
j) + '-bigskin-' + str(k) + '.jpg'
im = (onehero_link) # 请求url
if im.status_code == 200:
open(str(k) + '.jpg', 'wb').t) # 写⼊⽂件
downloadPic()
除去注释,接近20⾏的代码我们就完成了王者荣耀全英雄⽪肤的爬取,是不是⾮常简单呢?我们可以
测试⼀下这个程序,⾸先要在桌⾯上创建⼀个⽂件夹,名为wzry,因为这⾥的代码我已经写死了,如果要修改的话⼤家也可以进⾏修改,⽂件夹创建完成后点击运⾏即可,等待
⽚刻,图⽚就全部下载完成了。
对于程序中json字符串的解析,我们还可以使⽤jsonpath模块来进⾏,使⽤该模块能够更加快捷地获取到我们想要的信息,解析⽅式如下:
hero_name = jsonpath.jsonpath(html_json, "$.ame")
hero_number = jsonpath.jsonpath(html_json, "$..ename")
该⽅法接收⼀个json字符串和解析规则,$…cname则表⽰从根⽬录下寻任意位置的以cname为键的值,并放⼊字典中。
结尾
linux在哪里下载软件
爬⾍是⾮常有趣的,因为它⾮常直观,视觉冲击感强,写出来也很有成就感,爬⾍虽然强⼤,但千万不能随意爬取隐私信息。
最后,如果对⽂中程序有更好的建议,欢迎到python开发IT交流:887934385 讨论、其中提供素材及相关视频

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。