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 实现插入排序算法
Jun 05 Python
python通过函数属性实现全局变量的方法
May 16 Python
利用Python为iOS10生成图标和截屏
Sep 24 Python
Python冲顶大会 快来答题!
Jan 17 Python
Python文件读写保存操作的示例代码
Sep 14 Python
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
Apr 26 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
Aug 06 Python
Python shutil模块用法实例分析
Oct 02 Python
Python使用指定字符长度切分数据示例
Dec 05 Python
对python中return与yield的区别详解
Mar 12 Python
Python Pandas数据分析工具用法实例
Nov 05 Python
python脚本框架webpy的url映射详解
Nov 20 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 XML数据解析代码
2010/05/26 PHP
php explode函数实例代码
2012/02/27 PHP
详解PHP的Yii框架中扩展的安装与使用
2016/04/01 PHP
PHP正则表达式处理函数(PCRE 函数)实例小结
2019/05/09 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
一组JS创建和操作表格的函数集合
2009/05/07 Javascript
W3C Group的JavaScript1.8 新特性介绍
2009/05/19 Javascript
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
jquery easyui 结合jsp简单展现table数据示例
2014/04/18 Javascript
JavaScript实现的图像模糊算法代码分享
2014/04/22 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
JQuery中serialize() 序列化
2015/03/13 Javascript
javascript顺序加载图片的方法
2015/07/18 Javascript
vue通过watch对input做字数限定的方法
2017/07/13 Javascript
jQuery实现导航样式布局操作示例【可自定义样式布局】
2018/07/24 jQuery
在vue.js中使用JSZip实现在前端解压文件的方法
2018/09/05 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
jQuery轮播图功能制作方法详解
2019/12/03 jQuery
js实现带搜索功能的下拉框
2020/01/11 Javascript
Vue Element校验validate的实例
2020/09/21 Javascript
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
python中virtualenvwrapper安装与使用
2018/05/20 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
Python 离线工作环境搭建的方法步骤
2019/07/29 Python
基于python分析你的上网行为 看看你平时上网都在干嘛
2019/08/13 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
2019/10/01 Python
python利用线程实现多任务
2020/09/18 Python
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
澳洲Chemist Direct药房中文网:澳洲大型线上直邮药房
2019/11/04 全球购物
美国最大和最受信任的二手轮胎商店:Bestusedtires.com
2020/06/02 全球购物
介绍一下木马病毒的种类
2015/07/26 面试题
2014年党员承诺书范文
2014/05/20 职场文书
大学生简短的自我评价
2014/09/12 职场文书
Python find()、rfind()方法及作用
2022/12/24 Python