python玩王者荣耀皮肤_利用Python完成对王者荣耀英雄全皮肤的下载
本文使用python的第三方模块requests爬取王者荣耀所有英雄的图片,并将图片按每个英雄为一个目录存入文件夹中,方便用作桌面壁纸。
基本环境配置
版本:Python3
系统:Windows
相关模块:requests
安装模块:pip install requests
完整代码# -*- coding: utf-8 -*-
"""
Created on Wed Dec 13 13:49:52 2017
@author:KillerTwo
"""
import requests
import os
hero_list_url = 'http://pvp.qq.com/web201605/js/herolist.json'
hero_skin_root_url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/'
skin_base_dir = 'C:\\Users\\lwt27\\Pictures\\image\\heroskin\\'
def get_ename(hero_json):#传入获取到的python对象,如hero_list_json
'''获取英雄名称对应英雄编号的一个字典,例如{小乔:106,...}'''
cname_ename = {}
for hero in hero_json:
cname_ename[hero['cname']] = hero['ename']
return cname_ename
def get_skin_name(hero_json): #传入从网页获取到的json转换为python字典的对象
'''获取英雄名称对应的皮肤的所有皮肤名称的字典,例如
{'小乔':'恋之微风|万圣前夜|天鹅之梦|纯白花嫁|缤纷独角兽',...}'''
cname_skin_name = {}
for hero in hero_json:
cname_skin_name[hero['cname']] = hero['skin_name']
return cname_skin_name
def get_hero_skin_count(cname_skin_name): #传入英雄名称对应皮肤名称的字典
'''获取每个英雄对应的皮肤的个数,例如{'小乔':5,...}'''
cname_skin_count = {}
for item in cname_skin_name.items():
cname_skin_count[item[0]] = len(item[1].split('|'))
return cname_skin_count
def get_skin_name_url(skin_base_rul,cname_skin_count,cname_ename):
#传入皮肤根地址和名称对应皮肤数量的字典和名称对应编号的字典
'''返回英雄名称对应的所有皮肤的url地址列表的字典,例如{小乔:[skin_url1,skin_url2],...}'''
cname_url_list = {}
for cname,count in cname_skin_count.items():
#print(cname)
#print(count)
#print(skin_base_rul)
#print(cname_ename[cname])
base_url = skin_base_rul+str(cname_ename[cname])+'/'+str(cname_ename[cname])+'-bigskin-'
#print(base_url)
skin_url_list = [str(base_url)+str(num)+'.jpg' for num in range(1,count+1)]
cname_url_list[cname] = skin_url_list
return cname_url_list
#print()
d = get_skin_name_url(hero_skin_root_url,get_hero_skin_count(get_skin_name(hero_list_json)),get_ename(hero_list_json))
#print(d)
def get_cname_skin_name(cname_skin_name):#传入名称对应皮肤名称字符串的字典
cname_skin_name_dict = {} #返回名称对应【皮肤名称的列表】的字典
for cname,skin_name_list in cname_skin_name.items():
skin_list = [name for name in skin_name_list.split('|')]
cname_skin_name_dict[cname] = skin_list
return cname_skin_name_dict
#s = get_skin_name(hero_list_json)
#print(s)
#f = get_cname_skin_name(s)
#print(f)
def get_hero_skin(cname_url_list,cname_skin_name):#传入名称对应【皮肤名称列表】的字典和名称对应皮肤url列表的字典
# """获取每个英雄的图片"""
for cname,skin_url in cname_url_list.items():
if mkdir(skin_base_dir+cname):#创建指定目录
os.chdir(skin_base_dir+cname) #进入到创建的目录
for i in range(len(skin_url)):
file_name = cname_skin_name[cname][i]+'.jpg'
r = requests.get(skin_url[i])
with open(file_name,'wb') as f:
f.write(r.content)
#创建目录
def mkdir(path):
# 引入模块
import os
# 去除首位空格
path=path.strip()
# 去除尾部 \ 符号
path=path.rstrip("\\")
# 判断路径是否存在
# 存在 True
# 不存在 False
isExists=os.path.exists(path)
# 判断结果
if not isExists:
# 如果不存在则创建目录
# 创建目录操作函数
os.makedirs(path)
print(path+' 创建成功')
return True
else:
# 如果目录存在则不创建,并提示目录已存在
print(path+' 目录已存在')
return False
return
if __name__ == '__main__':
hero_list_body = requests.get(hero_list_url) #请求英雄列表
hero_list_json = hero_list_body.json() #将英雄列表的获取的json数据转换为python对象
cname_ename = {} #英雄名称对应英雄编号的字典
cname__skin_name = {} #英雄名称对应皮肤名称字符串的字典
cname_skin_count = {} #英雄名称对应皮肤数量的字典
cname_skin_name_str_list = get_skin_name(hero_list_json)
cname_skin_name_list = get_cname_skin_name(cname_skin_name_str_list)
cname_skin_count = get_hero_skin_count(cname_skin_name_str_list)
cname_ename = get_ename(hero_list_json)
cnam_skin_url_list = get_skin_name_url(hero_skin_root_url,cname_skin_count,cname_ename)
get_hero_skin(cnam_skin_url_list,cname_skin_name_list)
下面是保存抓取到的图片的文件夹样例:
以上就是抓取王者荣耀所有英雄皮肤的简单示例,上述的代码并没有使用python多线程执行抓取图片的函数,所以在执行的时候可能需要花费几分钟的时间。
python玩王者荣耀皮肤_利用Python完成对王者荣耀英雄全皮肤的下载相关推荐
- 利用python从网页查找数据_利用Python模拟淘宝的搜索过程并对数据进行可视化分析...
数据挖掘入门与实战 公众号: datadw 本文讲述如何利用Python模拟淘宝的搜索过程并对搜索结果进行初步的数据可视化分析. 搜索过程的模拟:淘宝的搜索页面有两种形式, 一种形式是, 2019/2 ...
- python怎么去掉视频字幕_利用Python实现字幕挂载(把字幕文件与视频合并)思路详解...
其实超简单超简单!python好现成的库,一下子省略了好多步骤! 本文在Windows环境下!linux只是不需要手动输入imagicmagick的位置! 需要用到的环境 python(基本上只要不是 ...
- python制作心形照片墙_利用python生成照片墙的示例代码
PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了.其官方主页为:PIL. PIL历 ...
- python 物理学中的应用_利用python求解物理学中的双弹簧质能系统详解
前言 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的模型如下: 在这个系统里有两个物体,它们的质 ...
- python用渐变色画圆_利用python控制Autocad:pyautocad方式
发现pyautocad模块:可以用python控制autocad的包.今天把文档中的重点内容摘录出来,以后绘图.计算大工程量.或者识别施工图的时候时候也许可以用到. 一.连接cad pyautocad ...
- python爬去百度文库_利用Python语言轻松爬取数据[精品文档]
利用 Python 语言轻松爬取数据 对于小白来说,爬虫可能是一件非常复杂. 技术门槛很高的事情. 比如有人认为学爬虫必须精通 Python ,然后哼哧哼哧系统学习 Python 的每个知识点,很久之 ...
- python beautifulsoup抓取网页内容_利用Python和Beautiful Soup抓取网页内容
利用Python和Beautiful Soup抓取网页内容 Posted on 2012-08-09 00:08 SamWei 阅读(381) 评论(1) 编辑 收藏 Python 3中提供了url打 ...
- python获取指定端口流量_利用python获取nginx服务的ip以及流量统计信息
#!/usr/bin/python #coding=utf8 log_file = "/usr/local/nginx/logs/access.log" with open(log ...
- python输入数组并计算_利用Python进行数据分析——Numpy基础:数组和矢量计算
利用Python进行数据分析--Numpy基础:数组和矢量计算 ndarry,一个具有矢量运算和复杂广播能力快速节省空间的多维数组 对整组数据进行快速运算的标准数学函数,无需for-loop 用于读写 ...
最新文章
- 2021年大数据Flink(十九):案例一 基于时间的滚动和滑动窗口
- winform下通过webclient使用非流方式上传(post)数据和文件
- mysql导入100000000需要多久_MYSQL批量插入千万级数据只需百秒
- python成员方法共享吗_python 入坑路 类的特殊成员方法
- Go语言学习笔记(十八)之文件读写
- Python+OpenCV:特征匹配(Feature Matching)
- 怎么在Guitar Pro乐谱中加入哇音
- python学习第十八天 --文件操作
- AJAX, JSON.js,Newtonsoft.Json.dll,nunit.framework.dll 源代码
- PopClip 能让像苹果电脑像 iOS 一样选中文字后弹出搜索、复制、粘贴等选项
- oracle查询日志空间大小,ORACLE 管理 日志与空间
- Visual Studio部署HoloLens 找不到WindowsMobile SDK
- 手机共享计算机网络连接,终于找到电脑网络共享给手机
- 010-java 表单方式或者base64方式上传图片,后端使用nutz的post转发图片到另一个请求...
- vivado ILA核使用教程
- 怎么把歌曲的格式改成mp3格式?
- 如何对电脑屏幕进行监控?
- Franka Emika Panda机械臂规划路径时,rviz中手爪显示碰撞
- suricata smtp协议解析源码注释一
- YOLO v2论文笔记
热门文章
- 【勘误】第4章字符串的实现
- WHAT THE DATA SAYS ABOUT KUBERNETES DEPLOYMENT PATTERNS
- DRBD + heartbeat 介绍及安装测试
- 硬盘运行时断电会导致硬盘怎样
- select下拉框下拉跳转代码
- java可以用 lt =判断int吗_int 和 integer:装箱和拆箱的过程,会用到什么方法
- c++ 弹出菜单在固定的位置_固定资产管理软件操作手册(资产维修)
- python删除过期文件_Python删除指定目录下的过期文件的代码
- linux光驱驱动目录,linux下挂载光驱
- 在Python中读取MATLAB的数据文件