python玩王者荣耀皮肤碎片怎么获得_用python的requests第三方模块抓取王者荣耀所有英雄的皮肤...

1 #-*- coding: utf-8 -*-

2 """

3 Created on Wed Dec 13 13:49:52 20174

5 @author:KillerTwo6 """

7 importrequests8 importos9 hero_list_url = 'http://pvp.qq.com/web201605/js/herolist.json'

10 hero_skin_root_url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/'

11 skin_base_dir = 'C:\\Users\\lwt27\\Pictures\\image\\heroskin\\'

12

13

14 def get_ename(hero_json):#传入获取到的python对象,如hero_list_json

15 '''获取英雄名称对应英雄编号的一个字典,例如{小乔:106,...}'''

16 cname_ename ={}17 for hero inhero_json:18 cname_ename[hero['cname']] = hero['ename']19 returncname_ename20

21 def get_skin_name(hero_json): #传入从网页获取到的json转换为python字典的对象

22 '''获取英雄名称对应的皮肤的所有皮肤名称的字典,例如23 {'小乔':'恋之微风|万圣前夜|天鹅之梦|纯白花嫁|缤纷独角兽',...}'''

24 cname_skin_name ={}25 for hero inhero_json:26 cname_skin_name[hero['cname']] = hero['skin_name']27 returncname_skin_name28

29 def get_hero_skin_count(cname_skin_name): #传入英雄名称对应皮肤名称的字典

30 '''获取每个英雄对应的皮肤的个数,例如{'小乔':5,...}'''

31 cname_skin_count ={}32 for item incname_skin_name.items():33 cname_skin_count[item[0]] = len(item[1].split('|'))34 returncname_skin_count35

36 defget_skin_name_url(skin_base_rul,cname_skin_count,cname_ename):37 #传入皮肤根地址和名称对应皮肤数量的字典和名称对应编号的字典

38 '''返回英雄名称对应的所有皮肤的url地址列表的字典,例如{小乔:[skin_url1,skin_url2],...}'''

39 cname_url_list ={}40 for cname,count incname_skin_count.items():41 #print(cname)

42 #print(count)

43 #print(skin_base_rul)

44 #print(cname_ename[cname])

45 base_url = skin_base_rul+str(cname_ename[cname])+'/'+str(cname_ename[cname])+'-bigskin-'

46 #print(base_url)

47 skin_url_list = [str(base_url)+str(num)+'.jpg' for num in range(1,count+1)]48 cname_url_list[cname] =skin_url_list49 returncname_url_list50

51 #print()

52 d =get_skin_name_url(hero_skin_root_url,get_hero_skin_count(get_skin_name(hero_list_json)),get_ename(hero_list_json))53 #print(d)

54

55 def get_cname_skin_name(cname_skin_name):#传入名称对应皮肤名称字符串的字典

56 cname_skin_name_dict = {} #返回名称对应【皮肤名称的列表】的字典

57 for cname,skin_name_list incname_skin_name.items():58 skin_list = [name for name in skin_name_list.split('|')]59 cname_skin_name_dict[cname] =skin_list60 returncname_skin_name_dict61

62 #s = get_skin_name(hero_list_json)

63 #print(s)

64 #f = get_cname_skin_name(s)

65 #print(f)

66

67 def get_hero_skin(cname_url_list,cname_skin_name):#传入名称对应【皮肤名称列表】的字典和名称对应皮肤url列表的字典

68 #"""获取每个英雄的图片"""

69 for cname,skin_url incname_url_list.items():70

71 if mkdir(skin_base_dir+cname):#创建指定目录

72 os.chdir(skin_base_dir+cname) #进入到创建的目录

73

74 for i inrange(len(skin_url)):75 file_name = cname_skin_name[cname][i]+'.jpg'

76 r =requests.get(skin_url[i])77 with open(file_name,'wb') as f:78 f.write(r.content)79 #创建目录

80 defmkdir(path):81 #引入模块

82 importos83 #去除首位空格

84 path=path.strip()85 #去除尾部 \ 符号

86 path=path.rstrip("\\")87 #判断路径是否存在

88 #存在 True

89 #不存在 False

90 isExists=os.path.exists(path)91 #判断结果

92 if notisExists:93 #如果不存在则创建目录

94 #创建目录操作函数

95 os.makedirs(path)96 print(path+'创建成功')97 returnTrue98 else:99 #如果目录存在则不创建,并提示目录已存在

100 print(path+'目录已存在')101 returnFalse102 return

103

104 if __name__ == '__main__':105

106 hero_list_body = requests.get(hero_list_url) #请求英雄列表

107 hero_list_json = hero_list_body.json() #将英雄列表的获取的json数据转换为python对象

108

109 cname_ename = {} #英雄名称对应英雄编号的字典

110 cname__skin_name = {} #英雄名称对应皮肤名称字符串的字典

111 cname_skin_count = {} #英雄名称对应皮肤数量的字典

112

113 cname_skin_name_str_list =get_skin_name(hero_list_json)114 cname_skin_name_list =get_cname_skin_name(cname_skin_name_str_list)115 cname_skin_count =get_hero_skin_count(cname_skin_name_str_list)116 cname_ename =get_ename(hero_list_json)117 cnam_skin_url_list =get_skin_name_url(hero_skin_root_url,cname_skin_count,cname_ename)118 get_hero_skin(cnam_skin_url_list,cname_skin_name_list)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值