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 获取进程pid号的方法
Mar 10 Python
Python实现压缩文件夹与解压缩zip文件的方法
Sep 01 Python
解决pycharm无法识别本地site-packages的问题
Oct 13 Python
用python脚本24小时刷浏览器的访问量方法
Dec 07 Python
对Python捕获控制台输出流的方法详解
Jan 07 Python
Python列表(List)知识点总结
Feb 18 Python
对python3 sort sorted 函数的应用详解
Jun 27 Python
python使用正则表达式(Regular Expression)方法超详细
Dec 30 Python
python UDF 实现对csv批量md5加密操作
Jan 01 Python
Django操作cookie的实现
May 26 Python
浅谈哪个Python库才最适合做数据可视化
Jun 28 Python
python装饰器代码解析
Mar 23 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 curl登陆qq后获取用户信息时证书错误
2015/02/03 PHP
PHP中使用socket方式GET、POST数据实例
2015/04/02 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
详解PHP如何更好的利用PHPstorm的自动提示
2017/08/18 PHP
国外的为初学者写的JavaScript教程
2008/06/09 Javascript
JQUERY复选框CHECKBOX全选,取消全选
2008/08/30 Javascript
JS+XML 省份和城市之间的联动实现代码
2009/10/14 Javascript
Jquery实现图片左右自动滚动示例
2013/09/25 Javascript
javascript arguments使用示例
2014/12/16 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
2015/03/16 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
2015/06/23 Javascript
javascript检查浏览器是否已经启用XX功能
2015/07/10 Javascript
js实现网页定位导航功能
2017/03/07 Javascript
Vue学习笔记进阶篇之vue-cli安装及介绍
2017/07/18 Javascript
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
vue实现城市列表选择功能
2018/07/16 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
2018/11/19 Javascript
JS实现求5的阶乘示例
2019/01/21 Javascript
ES6知识点整理之Proxy的应用实例详解
2019/04/16 Javascript
vue计算属性无法监听到数组内部变化的解决方案
2019/11/06 Javascript
Python语言描述KNN算法与Kd树
2017/12/13 Python
200 行python 代码实现 2048 游戏
2018/01/12 Python
解决nohup执行python程序log文件写入不及时的问题
2019/01/14 Python
kafka监控获取指定topic的消息总量示例
2019/12/23 Python
一文了解python 3 字符串格式化 F-string 用法
2020/03/04 Python
俄罗斯药房连锁店:ASNA
2020/06/20 全球购物
绝对经典成功的大学生推荐信
2013/11/08 职场文书
大二自我鉴定
2014/01/31 职场文书
二年级学生评语大全
2014/04/23 职场文书
运动会横幅标语
2014/06/17 职场文书
旅游饭店管理专业自荐书
2014/06/28 职场文书
天那边观后感
2015/06/09 职场文书
趣味运动会通讯稿
2015/07/18 职场文书
教师节主题班会方案
2015/08/17 职场文书
2016春节放假通知范文
2015/08/18 职场文书