王者荣耀记录板

那是个栈

正文使用python的第二方模块requests爬取王者荣耀全数勇于的图形,并将图纸按每一种好汉为二个索引存入文件夹中,方便用作桌面壁纸


上面时具体的代码,已透过python3.6测试,能够成功运营:

\(2017/7/16\)
明日快要NOI啦 QAQ..
下一场教练说给大家来一场信心赛。。。
然后小编边上的 \(dalao\)
劝说教练不要信心赛 QAQ..说没有何样意义。。
然后教练觉得言之有理 …
于是乎大家清晨除了这几个之外七个\(dalao\) 有
\(18\) 分以外其余人集体爆零。。。
。。。 。。。
呵呵。

对此所要爬取的网页连接能够透过王者荣耀官网找到,

后来发现是教练忘了配**spj**导致唯一可做的**T2**全体爆零

  1 # -*- coding: utf-8 -*-
  2 """
  3 Created on Wed Dec 13 13:49:52 2017
  4 
  5 @author:KillerTwo
  6 """
  7 import requests
  8 import os
  9 hero_list_url = 'http://pvp.qq.com/web201605/js/herolist.json'
 10 hero_skin_root_url = 'http://game.gtimg.cnyxzj/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 in hero_json:
 18         cname_ename[hero['cname']] = hero['ename']
 19     return cname_ename
 20 
 21 def get_skin_name(hero_json): #传入从网页获取到的json转换为python字典的对象
 22     '''获取英雄名称对应的皮肤的所有皮肤名称的字典,例如
 23     {'小乔':'恋之微风|万圣前夜|天鹅之梦|纯白花嫁|缤纷独角兽',...}'''
 24     cname_skin_name = {}
 25     for hero in hero_json:
 26         cname_skin_name[hero['cname']] = hero['skin_name']
 27     return cname_skin_name
 28 
 29 def get_hero_skin_count(cname_skin_name): #传入英雄名称对应皮肤名称的字典
 30     '''获取每个英雄对应的皮肤的个数,例如{'小乔':5,...}'''
 31     cname_skin_count = {} 
 32     for item in cname_skin_name.items():
 33         cname_skin_count[item[0]] = len(item[1].split('|'))
 34     return cname_skin_count
 35 
 36 def get_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 in cname_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_list
 49     return cname_url_list
 50 
 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 in cname_skin_name.items():
 58         skin_list = [name for name in skin_name_list.split('|')]
 59         cname_skin_name_dict[cname] = skin_list
 60     return cname_skin_name_dict
 61     
 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 in cname_url_list.items():
 70         
 71         if mkdir(skin_base_dir+cname):#创建指定目录
 72             os.chdir(skin_base_dir+cname)  #进入到创建的目录
 73             
 74             for i in range(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 def mkdir(path):
 81     # 引入模块
 82     import os
 83     # 去除首位空格
 84     path=path.strip()
 85     # 去除尾部 \ 符号
 86     path=path.rstrip("\\")
 87     # 判断路径是否存在
 88     # 存在     True
 89     # 不存在   False
 90     isExists=os.path.exists(path)
 91     # 判断结果
 92     if not isExists:
 93         # 如果不存在则创建目录
 94         # 创建目录操作函数
 95         os.makedirs(path)
 96         print(path+' 创建成功')
 97         return True
 98     else:
 99         # 如果目录存在则不创建,并提示目录已存在
100         print(path+' 目录已存在')
101         return False
102     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)

感谢\(dalao \space : ztc,dbw\)
王者荣耀 1

下边是保存抓取到的图样的文书夹样例:


王者荣耀 2

\(2017/7/15\)
后天刚立的 \(flag\) 今天就…
\(UNR\) 爆炸了.
远程观摩大佬A掉 \(T1\),但是自身只会暴力 ..
而是提答挺好玩啊。。

如上就是抓取王者荣耀全体勇于皮肤的差不多示例,上述的代码并没有应用python二十四线程执行抓取图片的函数,所以在实施的时候大概要求开销几分钟的日子,


自此在拓展考订,添加应用python三十二线程执行抓取职责。

\(2017/7/14\)
QAQ …
貌似以后跟Rating无关的怎么竞技自个儿都不想写了QAQ…
明天打uoj打得热火队朝天
先天试验A掉一眼傻逼题打满暴力就养老了 ..
结果发现剩下的两道题也是傻逼题
结果就是全程被虐。。

 


\(2017/7/11\)
身为记录板。
除开刚开端的一段时间今后差不多从不写过。
离NOI只剩6天了。。
或许写一写啊,不然事后退役了都尚未怎么能够回顾的说。。


\(2017/6/9\space 19:56\)
前天就是东南培养和练习的最后一天啦.
到头来得以回到啦~\(≧▽≦)/~啦啦啦


\(2017/6/6\space 17:06\)
在东南呆了\(6\)天了。
于今谈话都带西南味。


\(2017/5/29\space 19:29\)
补题解陈设正式运转!
笔者要补在此以前做过的题的题解!


\(2017/5/17\space 11:57\)
省选过后感觉温馨变懒了无数。。
做了题懒得写题解。。
有时光不去学新东西而是去打王者。。。
自己要改成那种情形\(QAQ\).先从一天至少一篇博客做起>_<


\(2017/5/3\space 06:24\)
发现自个儿好久从未发过博客了\(QAQ\)…
方今直接在忙着改考试题,考试题写的博客无法揭露啊\(QAQ\)…


\(2017/5/2\space 15:13\)
用了一中午给全校里出了一套题。
自家猜会猛烈翻车。。
有道是及时又有啥不可创新出题翻车记了.


\(2017/5/1\space 18:32\)
五一放假回来。。
好困啊。
考试的时候睡觉还被磨练发现了。。
不过。。
王者荣耀真好玩.


\(2017/4/28\space 18:39\)
翌日放假 !!!
五一的假 !!!
有一天半的假 =_=


\(2017/4/28\space 10:02\)
自己去\(YY\)数位\(dp\),写了\(2h\)死活调不对.
三个板子题小编写了\(100+\)了.


\(2017/4/28\space 7:45\)
刚刚\(lrd\)给大家讲了讲数位\(dp\)
… …据悉今天要考三道数位\(dp\),吓得笔者赶忙去练数位\(dp\)…


\(2017/4/28\space 7:07\)
开一版记录一下说到底\(3\)个月的\(OI\)生涯吧.


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website