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运行的17个时新手常见错误小结
Aug 07 Python
Python栈类实例分析
Jun 15 Python
解决Python 遍历字典时删除元素报异常的问题
Sep 11 Python
windows下python之mysqldb模块安装方法
Sep 07 Python
Python+OpenCV实现车牌字符分割和识别
Mar 31 Python
python占位符输入方式实例
May 27 Python
python通过txt文件批量安装依赖包的实现步骤
Aug 13 Python
Pycharm最新激活码2019(推荐)
Dec 31 Python
Python urllib2运行过程原理解析
Jun 04 Python
使用Keras画神经网络准确性图教程
Jun 15 Python
python获取淘宝服务器时间的代码示例
Apr 22 Python
用Python生成会跳舞的美女
Jan 18 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
eWebEditor v3.8 商业完整版 (PHP)
2006/12/06 PHP
php xml实例 留言本
2009/03/20 PHP
PHP实现通过URL提取根域名
2016/03/31 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
2019/10/23 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
php使用自带dom扩展进行元素匹配的原理解析
2020/05/29 PHP
一次失败的jQuery优化尝试小结
2011/02/06 Javascript
验证手机号码的JS方法分享
2013/09/10 Javascript
JS 页面计时器示例代码
2013/10/28 Javascript
Mac地址验证的javascript代码
2013/11/09 Javascript
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
JS在onclientclick里如何控制onclick的执行
2016/05/30 Javascript
ES6中Symbol类型用法实例详解
2017/04/06 Javascript
详解如何用webpack打包一个网站应用项目
2017/07/12 Javascript
JavaScript表单即时验证 验证不成功不能提交
2017/08/31 Javascript
Koa项目搭建过程详细记录
2018/04/12 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
2019/05/15 Javascript
Javascript操作select控件代码实例
2020/02/14 Javascript
[09:40]DAC2018 4.5 SOLO赛 MidOne vs Miracle
2018/04/06 DOTA
python 算法 排序实现快速排序
2012/06/05 Python
Python选课系统开发程序
2016/09/02 Python
浅谈配置OpenCV3 + Python3的简易方法(macOS)
2018/04/02 Python
正则给header的冒号两边参数添加单引号(Python请求用)
2019/08/09 Python
解决Python Matplotlib绘图数据点位置错乱问题
2020/05/16 Python
Python新手学习装饰器
2020/06/04 Python
python空元组在all中返回结果详解
2020/12/15 Python
amazeui页面分析之登录页面的示例代码
2020/08/25 HTML / CSS
俄罗斯隐形眼镜和眼镜在线商店:Cronos
2020/06/02 全球购物
世界上最大的皮肤科医生拥有和经营的美容网站:LovelySkin
2021/01/03 全球购物
文秘个人求职信范文
2014/04/22 职场文书
初中生庆国庆演讲稿范文2014
2014/09/25 职场文书
学校办公室主任岗位职责
2015/04/01 职场文书
2015大学迎新标语
2015/07/16 职场文书
图文详解nginx日志切割的实现
2022/01/18 Servers
数据设计之权限的实现
2022/08/05 MySQL