python爬取王者荣耀全皮肤的简单实现代码


Posted in Python onJanuary 31, 2020

相信现在很多人都喜欢玩王者荣耀这款手游,里面好看的皮肤令人爱不释手。那么你有没有想过把王者荣耀高清皮肤设置为壁纸,像下面这样

python爬取王者荣耀全皮肤的简单实现代码

今天就来教大家如何利用python16行代码,实现王者荣耀全部高清皮肤的下载。

具体的操作分为两步:

1. 找到皮肤图片的地址

2. 下载图片

1. 寻找皮肤图片的地址 1. 找到英雄列表

百度"王者荣耀"进入官网 https://pvp.qq.com/。这里以Goole Chrome浏览器为例,在更多工具中选择开发者工具,或直接按F12进入调试界面,然后按F5刷新界面

python爬取王者荣耀全皮肤的简单实现代码

图中标识的herolist.json文件就是我们所需要的英雄列表,其中包括英雄编号、英雄名称、英雄类型、皮肤的名称等信息,在文件上右击复制链接,http://pvp.qq.com/web201605/js/herolist.json

python爬取王者荣耀全皮肤的简单实现代码

接下来验证一下我们寻找的是否正确,代码1:

import urllib.request
import json
import os

response = urllib.request.urlopen("http://pvp.qq.com/web201605/js/herolist.json")

hero_json = json.loads(response.read())
hero_num = len(hero_json)

print(hero_json)
print("hero_num : " , str(hero_num))

 以上代码读取英雄列表并存入hero_json,并获取英雄数量,运行效果如下图

python爬取王者荣耀全皮肤的简单实现代码

  2. 找到英雄皮肤地址

点击首页的“游戏资料”标签页,进入新的页面后随意点击一个英雄头像进入英雄资料页面,以李白为例。同样的F12然后F5,将鼠标在李白的几个皮肤上一次扫过,

来看调试窗口

python爬取王者荣耀全皮肤的简单实现代码

 可以看到李白的高清皮肤一共有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如下:

hero_name = hero_json[0]['cname']
skin_names = hero_json[0]['skin_name'].split('|')
skin_num = len(skin_names)

print('hero_name: ', hero_name)
print('skin_names :', skin_names)
print('skin_num: ' + str(skin_num))

 测试后的运行结果如下:

python爬取王者荣耀全皮肤的简单实现代码

  可以看到廉颇一共两个皮肤,皮肤名称分别为:正义爆轰和地狱岩魂。

2. 下载文件

下载文件用到urlretrieve接口,并且考虑两个问题:

1. 检查文件夹是否存在,不存在则创建;

save_dir = 'D:\heroskin\\'
if not os.path.exists(save_dir):
os.mkdir(save_dir)

2. 检查图片文件是否存在,如果存在则跳过下载。

if not os.path.exists(save_file_name):
urllib.request.urlretrieve(skin_url, save_file_name)

代码三如下:

save_dir = 'D:\heroskin\\'
if not os.path.exists(save_dir):
 os.mkdir(save_dir)
 for i in range(hero_num):
  # 获取英雄皮肤列表
  skin_names = hero_json[i]['skin_name'].split('|')
  for cnt in range(len(skin_names)):
   save_file_name = save_dir + str(hero_json[i]['ename']) + '-' +hero_json[i]['cname']+ '-' +skin_names[cnt] + '.jpg'
   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'
   print(skin_url)
   if not os.path.exists(save_file_name):
    urllib.request.urlretrieve(skin_url, save_file_name)

总结

最后完整代码如下,除去注释和空行一共16行代码,实现了下载王者荣耀全部高清皮肤的功能:

import urllib.request
import json
import os
 
response = urllib.request.urlopen("http://pvp.qq.com/web201605/js/herolist.json")
hero_json = json.loads(response.read())
hero_num = len(hero_json)
save_dir = 'D:\heroskin\\'
if not os.path.exists(save_dir):
 os.mkdir(save_dir)
 for i in range(hero_num):
  # 获取英雄皮肤列表
  skin_names = hero_json[i]['skin_name'].split('|')
  for cnt in range(len(skin_names)):
   save_file_name = save_dir + str(hero_json[i]['ename']) + '-' +hero_json[i]['cname']+ '-' +skin_names[cnt] + '.jpg'
   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'
   print(skin_url)
   if not os.path.exists(save_file_name):
    urllib.request.urlretrieve(skin_url, save_file_name)

实现后的效果如图所示:

python爬取王者荣耀全皮肤的简单实现代码

  哈哈,看来掌握一门语言是多么的重要。

以上知识点不难,大家如果有任何补充可以联系三水点靠木小编。

Python 相关文章推荐
Python模块学习 filecmp 文件比较
Aug 27 Python
Python中用函数作为返回值和实现闭包的教程
Apr 27 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
Nov 11 Python
python基础教程项目四之新闻聚合
Apr 02 Python
python 通过字符串调用对象属性或方法的实例讲解
Apr 21 Python
python 实现在Excel末尾增加新行
May 02 Python
python3实现SMTP发送邮件详细教程
Jun 19 Python
PYQT5实现控制台显示功能的方法
Jun 25 Python
基于python的Paxos算法实现
Jul 03 Python
python扫描线填充算法详解
Feb 19 Python
PageFactory设计模式基于python实现
Apr 14 Python
keras的load_model实现加载含有参数的自定义模型
Jun 22 Python
Python进阶之迭代器与迭代器切片教程
Jan 29 #Python
Python列表list操作相关知识小结
Jan 29 #Python
给Python学习者的文件读写指南(含基础与进阶)
Jan 29 #Python
40个你可能不知道的Python技巧附代码
Jan 29 #Python
你可能不知道的Python 技巧小结
Jan 29 #Python
Python如何通过Flask-Mail发送电子邮件
Jan 29 #Python
Python原始套接字编程实例解析
Jan 29 #Python
You might like
PHP中实现中文字符进制转换原理分析
2011/12/06 PHP
浅谈PHP链表数据结构(单链表)
2016/06/08 PHP
JQuery SELECT单选模拟jQuery.select.js
2009/11/12 Javascript
jQuery 表单验证扩展(四)
2010/10/20 Javascript
JS 获取浏览器和屏幕宽高等信息代码
2014/03/31 Javascript
node.js中的events.emitter.once方法使用说明
2014/12/10 Javascript
Javascript基础教程之switch语句
2015/01/18 Javascript
JavaScript中模拟实现jsonp
2015/06/19 Javascript
CSS3实现动态背景登录框的代码
2015/07/28 Javascript
js实现点击切换TAB标签实例
2015/08/21 Javascript
jQuery+CSS3实现3D立方体旋转效果
2015/11/10 Javascript
jquery实现简单文字提示效果
2015/12/02 Javascript
angularjs封装bootstrap时间插件datetimepicker
2016/06/20 Javascript
微信小程序 Audio API详解及实例代码
2016/09/30 Javascript
js利用appendChild对标签进行排序的实现方法
2016/10/16 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
NodeJs中express框架的send()方法简介
2017/06/20 NodeJs
jQuery 实现图片的依次加载图片功能
2017/07/06 jQuery
JS与CSS3实现图片响应鼠标移动放大效果示例
2018/05/04 Javascript
动态加载JavaScript文件的3种方式
2018/05/05 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
2018/11/01 Javascript
python自动格式化json文件的方法
2015/03/11 Python
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
Django学习笔记之Class-Based-View
2017/02/15 Python
python3 kmp 字符串匹配的方法
2018/07/07 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
Brydge英国:适用于Apple iPad和Microsoft Surface Pro的蓝牙键盘
2019/05/16 全球购物
毕业生简单求职信
2013/11/19 职场文书
体育教学随笔感言
2014/02/24 职场文书
学生会竞选演讲稿
2014/04/24 职场文书
推广普通话共筑中国梦演讲稿
2014/09/21 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
爱心募捐感谢信
2015/01/22 职场文书
优秀范文:《但愿人长久》教学反思3篇
2019/10/24 职场文书