ここでCSDNは、ブロガーに感謝yaoyefengchen
小さな手Bailian
私は多くの人が格好良いと魅力的な肌の内側栄光の王にこの手の旅行をプレイしたいと考えています。そして、次のような、壁紙としてキングHDの皮膚の栄光について考えていません
今日はすべての高精細ダウンロード皮膚の王の栄光を達成するために、コードのpython16ラインを使用する方法をお教えします。
具体的な動作は、2つのステップに分けられます。
1.アドレスの皮膚の写真を見つけて
2.ダウンロード写真
1.肌画像アドレス
英雄のリストを検索します。1.
公式サイト入力する「栄光の王を」Baiduのhttps://pvp.qq.com/を。ここでグールChromeブラウザで、例えば、より多くのツールで開発者ツールを選択するか、直接プレスF12デバッグ・インタフェースを入力するには、その後、プレスF5インタフェースをリフレッシュします
図は、特定さherolist.jsonファイルリストを、英雄番号、英雄の名前、英雄タイプ、名前や皮膚の他の情報を含む、我々が必要ヒーロー、あるリンクをコピーするファイルを右クリックし、http://pvp.qq.com /web201605/js/herolist.json
その後、我々は正しいコード1を探しているかどうかを確認します。
1 import urllib.request 2 import json 3 import os 4 5 response = urllib.request.urlopen("http://pvp.qq.com/web201605/js/herolist.json") 6 7 hero_json = json.loads(response.read()) 8 hero_num = len(hero_json) 9 10 print(hero_json) 11 print("hero_num : " , str(hero_num))
以上代码读取英雄列表并存入hero_json,并获取英雄数量,运行效果如下图
2. 找到英雄皮肤地址
点击首页的“游戏资料”标签页,进入新的页面后随意点击一个英雄头像进入英雄资料页面,以李白为例。同样的F12然后F5,将鼠标在李白的几个皮肤上一次扫过,
来看调试窗口
可以看到李白的高清皮肤一共有5个,同样我们在一个皮肤上右键复制链接得到:
https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/131/131-bigskin-5.jpg
这就是我们想要得到的英雄皮肤链接。
分析这个链接我们可以发现,其中‘131’是英雄的编号,最后的'-5'是该英雄的皮肤编号。到这里,浏览器上所需要的信息我们已经全部获得。
2. 下载图片
1. 英雄有几个皮肤
在第一步获取到的herolist.json文件中有'skin_name'字段,我们只要解析这个字段就可以获取皮肤数量与名称。测试代码接代码1,代码2如下:
1 hero_name = hero_json[0]['cname'] 2 skin_names = hero_json[0]['skin_name'].split('|') 3 skin_num = len(skin_names) 4 5 print('hero_name: ', hero_name) 6 print('skin_names :', skin_names) 7 print('skin_num: ' + str(skin_num))
测试后的运行结果如下:
可以看到廉颇一共两个皮肤,皮肤名称分别为:正义爆轰和地狱岩魂。
2. 下载文件
下载文件用到urlretrieve接口,并且考虑两个问题:
1. 检查文件夹是否存在,不存在则创建;
1 save_dir = 'D:\heroskin\\' 2 if not os.path.exists(save_dir): 3 os.mkdir(save_dir)
2. 检查图片文件是否存在,如果存在则跳过下载。
1 if not os.path.exists(save_file_name): 2 urllib.request.urlretrieve(skin_url, save_file_name)
代码三如下:
1 save_dir = 'D:\heroskin\\' 2 if not os.path.exists(save_dir): 3 os.mkdir(save_dir) 4 for i in range(hero_num): 5 # 获取英雄皮肤列表 6 skin_names = hero_json[i]['skin_name'].split('|') 7 for cnt in range(len(skin_names)): 8 save_file_name = save_dir + str(hero_json[i]['ename']) + '-' +hero_json[i]['cname']+ '-' +skin_names[cnt] + '.jpg' 9 skin_url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/'+str(hero_json[i]['ename'])+ '/' +str(hero_json[i]['ename'])+'-bigskin-' + str(cnt+1) +'.jpg' 10 print(skin_url) 11 if not os.path.exists(save_file_name): 12 urllib.request.urlretrieve(skin_url, save_file_name)
总结
最后完整代码如下,除去注释和空行一共16行代码,实现了下载王者荣耀全部高清皮肤的功能:
1 import urllib.request 2 import json 3 import os 4 5 response = urllib.request.urlopen("http://pvp.qq.com/web201605/js/herolist.json") 6 hero_json = json.loads(response.read()) 7 hero_num = len(hero_json) 8 save_dir = 'D:\heroskin\\' 9 if not os.path.exists(save_dir): 10 os.mkdir(save_dir) 11 for i in range(hero_num): 12 # 获取英雄皮肤列表 13 skin_names = hero_json[i]['skin_name'].split('|') 14 for cnt in range(len(skin_names)): 15 save_file_name = save_dir + str(hero_json[i]['ename']) + '-' +hero_json[i]['cname']+ '-' +skin_names[cnt] + '.jpg' 16 skin_url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/'+str(hero_json[i]['ename'])+ '/' +str(hero_json[i]['ename'])+'-bigskin-' + str(cnt+1) +'.jpg' 17 print(skin_url) 18 if not os.path.exists(save_file_name): 19 urllib.request.urlretrieve(skin_url, save_file_name)
实现后的效果如图所示:
哈哈,看来掌握一门语言是多么的重要。