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的curses库使用教程
Apr 11 Python
用Python程序抓取网页的HTML信息的一个小实例
May 02 Python
在Python的Django框架中simple-todo工具的简单使用
May 30 Python
python生成随机密码或随机字符串的方法
Jul 03 Python
win10下tensorflow和matplotlib安装教程
Sep 19 Python
使用50行Python代码从零开始实现一个AI平衡小游戏
Nov 21 Python
python绘制直方图和密度图的实例
Jul 08 Python
PyCharm更改字体和界面样式的方法步骤
Sep 27 Python
Python 实现顺序高斯消元法示例
Dec 09 Python
Python tkinter 下拉日历控件代码
Mar 04 Python
python:HDF和CSV存储优劣对比分析
Jun 08 Python
PyTorch的Debug指南
May 07 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
MOTOROLA 摩托罗拉 MODEL 66-XI五灯中波收音机
2021/03/02 无线电
利用PHP实现图片等比例放大和缩小的方法详解
2013/06/06 PHP
php生成txt文件标题及内容的方法
2014/01/16 PHP
wamp安装后自定义配置的方法
2014/08/23 PHP
PHP中imagick函数的中文解释
2015/01/21 PHP
php递归遍历多维数组的方法
2015/04/18 PHP
PHP生成可点击刷新的验证码简单示例
2016/05/13 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
PHP如何解决微信文章图片防盗链
2020/12/09 PHP
永不消失的title提示代码
2007/02/15 Javascript
javascript之函数直接量(function(){})()
2007/06/29 Javascript
页面中iframe相互传值传参
2009/12/13 Javascript
JQuery里面的几种选择器 查找满足条件的元素$("#控件ID")
2011/08/23 Javascript
jQuery级联操作绑定事件实例
2014/09/02 Javascript
编写高质量JavaScript代码的基本要点
2016/03/02 Javascript
Google 地图叠加层实例讲解
2016/08/06 Javascript
微信小程序商城项目之侧栏分类效果(1)
2017/04/17 Javascript
jQuery日期范围选择器附源码下载
2017/05/23 jQuery
javascript观察者模式实现自动刷新效果
2017/09/05 Javascript
jQuery动态操作表单示例【基于table表格】
2018/12/06 jQuery
vuex管理状态 刷新页面保持不被清空的解决方案
2019/11/11 Javascript
微信小程序服务器日期格式化问题
2020/01/07 Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
2020/09/21 Javascript
[01:10]DOTA2次级职业联赛 - EP战队宣传片
2014/12/01 DOTA
详解Python中的动态属性和特性
2018/04/07 Python
Python实现计算字符串中出现次数最多的字符示例
2019/01/21 Python
Python button选取本地图片并显示的实例
2019/06/13 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
ORM Django 终端打印 SQL 语句实现解析
2019/08/09 Python
python实现抠图给证件照换背景源码
2019/08/20 Python
python 中的[:-1]和[::-1]的具体使用
2020/02/13 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
2020/07/01 Python
迎八一活动主题
2014/01/31 职场文书
倡议书的写法
2014/08/30 职场文书
员工试用期自我评价
2014/09/18 职场文书
三方协议书
2015/01/27 职场文书