本文使用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完成对王者荣耀英雄全皮肤的下载相关推荐

  1. 利用python从网页查找数据_利用Python模拟淘宝的搜索过程并对数据进行可视化分析...

    数据挖掘入门与实战 公众号: datadw 本文讲述如何利用Python模拟淘宝的搜索过程并对搜索结果进行初步的数据可视化分析. 搜索过程的模拟:淘宝的搜索页面有两种形式, 一种形式是, 2019/2 ...

  2. python怎么去掉视频字幕_利用Python实现字幕挂载(把字幕文件与视频合并)思路详解...

    其实超简单超简单!python好现成的库,一下子省略了好多步骤! 本文在Windows环境下!linux只是不需要手动输入imagicmagick的位置! 需要用到的环境 python(基本上只要不是 ...

  3. python制作心形照片墙_利用python生成照片墙的示例代码

    PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了.其官方主页为:PIL. PIL历 ...

  4. python 物理学中的应用_利用python求解物理学中的双弹簧质能系统详解

    前言 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的模型如下: 在这个系统里有两个物体,它们的质 ...

  5. python用渐变色画圆_利用python控制Autocad:pyautocad方式

    发现pyautocad模块:可以用python控制autocad的包.今天把文档中的重点内容摘录出来,以后绘图.计算大工程量.或者识别施工图的时候时候也许可以用到. 一.连接cad pyautocad ...

  6. python爬去百度文库_利用Python语言轻松爬取数据[精品文档]

    利用 Python 语言轻松爬取数据 对于小白来说,爬虫可能是一件非常复杂. 技术门槛很高的事情. 比如有人认为学爬虫必须精通 Python ,然后哼哧哼哧系统学习 Python 的每个知识点,很久之 ...

  7. python beautifulsoup抓取网页内容_利用Python和Beautiful Soup抓取网页内容

    利用Python和Beautiful Soup抓取网页内容 Posted on 2012-08-09 00:08 SamWei 阅读(381) 评论(1) 编辑 收藏 Python 3中提供了url打 ...

  8. python获取指定端口流量_利用python获取nginx服务的ip以及流量统计信息

    #!/usr/bin/python #coding=utf8 log_file = "/usr/local/nginx/logs/access.log" with open(log ...

  9. python输入数组并计算_利用Python进行数据分析——Numpy基础:数组和矢量计算

    利用Python进行数据分析--Numpy基础:数组和矢量计算 ndarry,一个具有矢量运算和复杂广播能力快速节省空间的多维数组 对整组数据进行快速运算的标准数学函数,无需for-loop 用于读写 ...

最新文章

  1. 2021年大数据Flink(十九):案例一 基于时间的滚动和滑动窗口
  2. winform下通过webclient使用非流方式上传(post)数据和文件
  3. mysql导入100000000需要多久_MYSQL批量插入千万级数据只需百秒
  4. python成员方法共享吗_python 入坑路 类的特殊成员方法
  5. Go语言学习笔记(十八)之文件读写
  6. Python+OpenCV:特征匹配(Feature Matching)
  7. 怎么在Guitar Pro乐谱中加入哇音
  8. python学习第十八天 --文件操作
  9. AJAX, JSON.js,Newtonsoft.Json.dll,nunit.framework.dll 源代码
  10. PopClip 能让像苹果电脑像 iOS 一样选中文字后弹出搜索、复制、粘贴等选项
  11. oracle查询日志空间大小,ORACLE 管理 日志与空间
  12. Visual Studio部署HoloLens 找不到WindowsMobile SDK
  13. 手机共享计算机网络连接,终于找到电脑网络共享给手机
  14. 010-java 表单方式或者base64方式上传图片,后端使用nutz的post转发图片到另一个请求...
  15. vivado ILA核使用教程
  16. 怎么把歌曲的格式改成mp3格式?
  17. 如何对电脑屏幕进行监控?
  18. Franka Emika Panda机械臂规划路径时,rviz中手爪显示碰撞
  19. suricata smtp协议解析源码注释一
  20. YOLO v2论文笔记

热门文章

  1. 【勘误】第4章字符串的实现
  2. WHAT THE DATA SAYS ABOUT KUBERNETES DEPLOYMENT PATTERNS
  3. DRBD + heartbeat 介绍及安装测试
  4. 硬盘运行时断电会导致硬盘怎样
  5. select下拉框下拉跳转代码
  6. java可以用 lt =判断int吗_int 和 integer:装箱和拆箱的过程,会用到什么方法
  7. c++ 弹出菜单在固定的位置_固定资产管理软件操作手册(资产维修)
  8. python删除过期文件_Python删除指定目录下的过期文件的代码
  9. linux光驱驱动目录,linux下挂载光驱
  10. 在Python中读取MATLAB的数据文件