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演示数型数据结构的教程
Apr 03 Python
简单讲解Python中的字符串与字符串的输入输出
Mar 13 Python
wxpython中Textctrl回车事件无效的解决方法
Jul 21 Python
详谈python3 numpy-loadtxt的编码问题
Apr 29 Python
Python3实现的简单验证码识别功能示例
May 02 Python
python和shell监控linux服务器的详细代码
Jun 22 Python
Python Matplotlib实现三维数据的散点图绘制
Mar 19 Python
python数据挖掘需要学的内容
Jun 23 Python
python查找重复图片并删除(图片去重)
Jul 16 Python
Django REST Framework序列化外键获取外键的值方法
Jul 26 Python
Python自动化导出zabbix数据并发邮件脚本
Aug 16 Python
python可视化分析绘制带趋势线的散点图和边缘直方图
Jun 25 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
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
使用PHP实现密保卡功能实现代码<打包下载直接运行>
2011/10/09 PHP
Zend Framework中的简单工厂模式 图文
2012/07/10 PHP
php生成静态页面的简单示例
2014/04/17 PHP
php中实现获取随机数组列表的自定义函数
2015/04/02 PHP
最新版本PHP 7 vs HHVM 多角度比较
2016/02/14 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
理解javascript回调函数
2014/12/28 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
AngularJS2中一种button切换效果的实现方法(二)
2017/03/27 Javascript
详解Angular Reactive Form 表单验证
2017/07/06 Javascript
浅谈Vue.js应用的四种AJAX请求数据模式
2017/08/30 Javascript
使用vux实现上拉刷新功能遇到的坑
2018/02/08 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
[01:42]TI4西雅图DOTA2前线报道 第一顿早饭哦
2014/07/08 DOTA
python threading模块操作多线程介绍
2015/04/08 Python
详解Python中contextlib上下文管理模块的用法
2016/06/28 Python
打包发布Python模块的方法详解
2016/09/18 Python
Kears+Opencv实现简单人脸识别
2019/08/28 Python
Python之Numpy的超实用基础详细教程
2019/10/23 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
Python类反射机制使用实例解析
2019/12/30 Python
使用已经得到的keras模型识别自己手写的数字方式
2020/06/29 Python
python 如何将office文件转换为PDF
2020/09/22 Python
HTML5地理定位实例
2014/10/15 HTML / CSS
html5 Canvas实现图片旋转的示例
2018/01/15 HTML / CSS
五分钟学会HTML5的WebSocket协议
2019/11/22 HTML / CSS
英国领先的豪华时尚家居网上商店:Amara
2019/08/12 全球购物
中科软笔试题和面试题
2014/10/07 面试题
计算机网络毕业生自荐信
2013/10/01 职场文书
产品设计开发计划书
2014/05/07 职场文书
2015元旦主持词开场白和结束语
2014/12/14 职场文书
班级管理经验交流材料
2015/11/02 职场文书
62句有关感恩节文案(推荐收藏)
2019/11/28 职场文书
mongoDB数据库索引快速入门指南
2022/03/23 MongoDB