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 相关文章推荐
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
Apr 16 Python
利用Python的装饰器解决Bottle框架中用户验证问题
Apr 24 Python
Python使用matplotlib实现在坐标系中画一个矩形的方法
May 20 Python
Python中矩阵库Numpy基本操作详解
Nov 21 Python
基于TensorFlow常量、序列以及随机值生成实例
Jan 04 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
Jun 14 Python
python使用建议与技巧分享(二)
Aug 17 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
Sep 09 Python
如何向scrapy中的spider传递参数的几种方法
Nov 18 Python
python使用glob检索文件的操作
May 20 Python
python操作xlsx格式文件并读取
Jun 02 Python
Python可变与不可变数据和深拷贝与浅拷贝
Apr 06 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 目录遍历、删除 函数的使用介绍
2013/04/28 PHP
关于PHP堆栈与列队的学习
2013/06/21 PHP
PHP rsa加密解密使用方法
2015/04/27 PHP
zend框架实现支持sql server的操作方法
2016/12/08 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
PHP多进程通信-消息队列使用
2019/03/08 PHP
用js实现键盘方向键翻页功能的代码
2007/06/03 Javascript
jquery中ajax学习笔记一
2011/10/16 Javascript
javascript解决innerText浏览器兼容问题思路代码
2013/05/17 Javascript
javascript 获取模态窗口的滚动位置代码
2013/08/06 Javascript
jQuery获得内容和属性示例代码
2014/01/16 Javascript
JavaScript数组常用操作技巧汇总
2014/11/17 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
2015/03/04 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
angularjs+bootstrap菜单的使用示例代码
2017/03/07 Javascript
详解Vue用自定义指令完成一个下拉菜单(select组件)
2017/10/31 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
2018/01/09 Javascript
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
python实现将文件夹内的每张图片批量分割成多张
2019/07/22 Python
python 变量初始化空列表的例子
2019/11/28 Python
NumPy统计函数的实现方法
2020/01/21 Python
Python调用百度OCR实现图片文字识别的示例代码
2020/07/17 Python
django教程如何自学
2020/07/31 Python
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
医药营销个人求职信范文
2014/02/07 职场文书
服务员岗位责任制
2014/02/11 职场文书
2014年仓管员工作总结
2014/11/18 职场文书
交通事故协议书范本
2014/11/18 职场文书
2014年勤工助学工作总结
2014/11/24 职场文书
领导干部考核评语
2015/01/04 职场文书
锅炉工岗位职责
2015/02/13 职场文书
2019学生会干事辞职信
2019/06/27 职场文书
解决Golang time.Parse和time.Format的时区问题
2021/04/29 Golang
教你一步步实现一个简易promise
2021/11/02 Javascript
python中validators库的使用方法详解
2022/09/23 Python