1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 用Python获取英雄联盟所有皮肤图片

用Python获取英雄联盟所有皮肤图片

时间:2021-05-13 12:04:04

相关推荐

用Python获取英雄联盟所有皮肤图片

先来看一张图片。

image.png

先讲解下思路,然后直接放源码,想要获取源码的同学直接拉到最下面就好。

1.爬虫第一步

首先要分析网页的DOM结构,就是英雄联盟官网,然后在下面找到英雄资料。然后在这里发现一个神奇的文件hero_list.js,打开看一下,结构是这样的。

image.png

嗯~~~,感觉可以省了好多工作了。可以到bejson转中文,然后解析看一下,妥妥的json文件。

其实在这个文件里,我们需要的就一个heroId,因为在英雄详情页,有1.js,2.js,天真的我以为全部是按顺序排的,所以直接写了个循环去获取,后来发现不是,走过的坑就不带大家走一遍了,直接说结论,有heroId,接下来就好办了,在英雄详情页可以找到这个文/images/lol/act/img/js/hero/1.js,这个文件也是一个标准的json文件,里面包含英雄的基本信息,还有皮肤信息。图片路径也在这里面。好了到目前为止准备工作是做好了。

2.爬虫第二步

准备工作做好了,接下来当然是开始写代码了。思路也很简单,首先读取hero_list.js,获取所有的heroId,然后拼装为这样的文件路径

url="/images/lol/act/img/js/hero/"+str(c["heroId"])+".js"

接下来就是挨个去读取文件找到图片地址,下载图片就好了。这里面我稍稍做了点修改,包括创建文件夹的时候,是将英雄名称作为文件夹名,皮肤名字作为图片名字,因为不做修改的话,下下来的图片全部都是big1005.jpg,big1006.jpg,皮肤作为文件名字的话有些特殊的字符串需要去掉,文件名是不允许/出现的,英雄皮肤名字中有个K/D/A,具体是谁忘了,所以拿皮肤名字作为文件名的话,有些特殊字符需要去掉。好了,接下来放出完整代码。代码中写了很多注释,可以参考下。

#coding:utf8import requestsimport jsonimport osimport urllib.requestcur_path = os.path.abspath(os.curdir)champion = "/images/lol/act/img/js/heroList/hero_list.js"championobj = json.loads(requests.get(champion).text)heroIds = championobj['hero']# print(championobj)# # print(jsonobj)for c in heroIds:print(c["heroId"])url="/images/lol/act/img/js/hero/"+str(c["heroId"])+".js"# 发送请求,获取响应结果response = requests.get(url)text = response.text# 打印本次请求响应内容# print(text)# 将响应内容转换为Json对象jsonobj = json.loads(text)# print(jsonobj)#获取英雄名称作为文件夹名heroname = jsonobj["hero"]["name"] print(heroname) isExists=os.path.exists(cur_path+'/所有皮肤图片/'+heroname)skinpath =cur_path+'/所有皮肤图片/'+heronameif not isExists:os.makedirs(cur_path+'/所有皮肤图片/'+heroname)# print(heroname)#获取所有的皮肤heroskins = jsonobj["skins"]# print(heroskins)for s in heroskins:skinname = str(s["name"]).replace(' ','-').replace('/','') #皮肤名字skinimage = str(s["mainImg"]) #皮肤图片路径if(len(skinimage)!=0): file_suffix = os.path.splitext(skinimage)[1]filename = '{}{}{}{}'.format(skinpath,os.sep,skinname,file_suffix)urllib.request.urlretrieve(skinimage,filename)# print(skinimage)

其实我写这个项目的时候,就是自己的一个非常偶然的想法,也是我刚学习python的一个练手项目,回头去百度上一查,呃,发现好多好多人已经写过获取英雄联盟图片的项目了,比我写的好多了。所以我的就参考一下就好。

源码已经放到上面了,公众号关不关注都行,就是佛系,就是任性。

爱游戏爱编程.jpg

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。