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 22 Python
python中for语句简单遍历数据的方法
May 07 Python
简要讲解Python编程中线程的创建与锁的使用
Feb 28 Python
在pandas多重索引multiIndex中选定指定索引的行方法
Nov 16 Python
python模拟登陆,用session维持回话的实例
Dec 27 Python
通过cmd进入python的实例操作
Jun 26 Python
python 含子图的gif生成时内存溢出的方法
Jul 07 Python
django项目简单调取百度翻译接口的方法
Aug 06 Python
python词云库wordcloud的使用方法与实例详解
Feb 17 Python
使用Matplotlib绘制不同颜色的带箭头的线实例
Apr 17 Python
python代码如何注释
Jun 01 Python
appium+python自动化配置(adk、jdk、node.js)
Nov 17 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实现的下载css文件中的图片的代码
2010/02/08 PHP
PHP面向对象精要总结
2014/11/07 PHP
PHP中使用正则表达式提取中文实现笔记
2015/01/20 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
中国地区三级联动下拉菜单效果分析
2012/11/15 Javascript
JavaScript实现找出字符串中第一个不重复的字符
2014/09/03 Javascript
javascript白色简洁计算器
2015/05/04 Javascript
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
JavaScript性能优化之小知识总结
2015/11/20 Javascript
jQuery调用WebMethod(PageMethod) NET2.0的方法
2016/04/15 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
JS实现json的序列化和反序列化功能示例
2017/06/13 Javascript
解决vue里碰到 $refs 的问题的方法
2017/07/13 Javascript
Vue 表单控件绑定的实现示例
2017/08/11 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
2017/09/28 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
2018/08/28 Javascript
详解Vue实战指南之依赖注入(provide/inject)
2018/11/13 Javascript
关于AOP在JS中的实现与应用详解
2019/05/06 Javascript
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
2020/02/09 Javascript
JavaScript实现简单进度条效果
2020/03/25 Javascript
[44:58]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第二场
2018/04/06 DOTA
Windows下Python2与Python3两个版本共存的方法详解
2017/02/12 Python
Django框架 查询Extra功能实现解析
2019/09/04 Python
Python 依赖库太多了该如何管理
2019/11/08 Python
Python try except异常捕获机制原理解析
2020/04/18 Python
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
Linux内核的同步机制是什么?主要有哪几种内核锁
2013/01/03 面试题
经济学博士求职自荐信范文
2013/11/23 职场文书
家具促销活动方案
2014/02/16 职场文书
关于责任的演讲稿
2014/05/20 职场文书
2014镇党委书记党建工作汇报材料
2014/11/02 职场文书
民间借贷借条如何写
2015/05/26 职场文书
天堂的孩子观后感
2015/06/11 职场文书
Android中View.post和Handler.post的关系
2022/06/05 Java/Android