利用Python完成对王者荣耀英雄全皮肤的下载

20行代码爬取王者荣耀英雄皮肤!让你享受白嫖的快乐! 引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了。我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行代码即可完成。 准备工作 爬取皮肤本身并不难,难点在于分析,我们首先得得到皮肤图片的url地址,话不多说,我们马上来到王者荣耀的官网: 我们点击英雄资料,然后随意地选择一位英雄,接着F12打开调试台,找到英雄皮肤的图片地址: 接着,我们切换一下英雄皮肤,会发现图片地址没有明显的变化,只是最后的数字序号改变了,我们将两. 阅读详情

本文使用python的第三方模块requests爬取王者荣耀所有英雄的图片,并将图片按每个英雄为一个目录存入文件夹中,方便用作桌面壁纸。

基本环境配置

版本:Python3

系统:Windows

相关模块:requests

安装模块:

pip install requests

完整代码

'''
在学习过程中有什么不懂得可以加我的
python学习交流扣扣qun,934109170
群里有不错的学习教程、开发工具与电子书籍。
与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容。
'''
# -*- 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爬取王者荣耀英雄皮肤数据 网址:https://pvp.qq.com/web201605/herolist.shtml 1.获得英雄信息,并保存为json文件 1.1 使用requests爬取信息,requests模块爬取的是Network/Response下的静态数据。 首先获取网页的数据(有如下1.1和1.2两种方式),在此之前先了解xpath的使用:xpath是使用节点路径表达式来选取XML或HTML文档中的节点或节点集。常见的路径表达式如下 路径表达式 含义 / 从根节 阅读详情

相关推荐

Python爬虫——王者荣耀皮肤拉取

文章目录Python爬虫——王者荣耀皮肤拉取资源地址HeroScrapy.py运行上面的代码即可注意点 Python爬虫——王者荣耀皮肤拉取 开门见山,话不多说 资源地址 英雄信息列表:http://pvp.qq.com/web201605/js/herolist.json 皮肤前缀地址:http://game.gtimg.cn/images/yxzj/img201606/skin/her...

G_Q_L的博客 3256

Python代码下载王者荣耀皮肤图片

亲测可用,python环境安装之后,,运行即可,Python代码下载王者荣耀皮肤图片 Python代码下载王者荣耀皮肤图片

20行Python代码爬取王者荣耀英雄皮肤_王者荣耀数据提取

herolist = requests.get(url) # 获取英雄列表json文件herolist_json = herolist.json() # 转化为json格式hero_name = list(map(lambda x: x[‘cname’], herolist.json())) # 提取英雄的名字hero_number = list(map(lambda x: x[‘ename’], herolist.json())) # 提取英雄的编号。

2401_89740540的博客 6679

听说学习python没有做程序员,都能月薪过万?

学习python没有做程序员也能月薪过万,你知道是什么原因吗

隔壁王叔的博客 202

Python王者荣耀皮肤批量下载

Python使用requests批量下载王者荣耀皮肤

kevin_9305的博客 2364

Python爬虫之一:十几行代码下载王者荣耀所有皮肤

寻找皮肤图片地址 1 找到英雄列表 2 找到英雄皮肤地址 下载图片 1 英雄有几个皮肤 2 下载文件 起因:前两天在公众号上看到一篇文章内容就是爬取王者荣耀皮肤,但是内容太大概了,如果跟着他做肯定做不出来,所以我打算自己做。 之前接触过爬虫还是几年前爬取豆瓣电台的歌曲,那时候用的C++,json解析还要用第三方库,总之很麻烦。最近接触到了python,深深的感觉这门语...

C与Python实战 2万+

python简单爬取王者荣耀英雄皮肤图片

昨天在某公众号看见一篇关于用python王者荣耀中所有英雄皮肤的文章, https://mp.weixin.qq.com/s/UgF5FYJ5dX1aNw6K0E_Jjw 感觉挺有趣的,下载来当壁纸也不错,就动手一波,环境用的是python3。过程中也遇到了一点问题,所以记录下来                     第一步首先打开  http://pvp.qq.com/web2...

灬彬的博客 2万+

python王者荣耀皮肤_利用Python完成王者荣耀英雄皮肤下载

本文使用python的第三方模块requests爬取王者荣耀所有英雄的图片,并将图片按每个英雄为一个目录存入文件夹中,方便用作桌面壁纸。基本环境配置版本:Python3系统:Windows相关模块:requests安装模块:pip install requests完整代码# -*- coding: utf-8 -*-"""Created on Wed Dec 13 13:49:52 2017@au...

weixin_39594895的博客 233

20行Python代码爬取王者荣耀英雄皮肤

引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了。我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成。 准备工作 爬取皮肤本身并不难,难点在于分析,我们首先得得到皮肤图片的url地址,话不多说,我们马上来到王者荣耀的官网: 我们点击英雄资料,然后随意地选择一位英雄,接着F12打开调试台,找到英雄皮肤的图片...

。。。 23万+

Python爬取"王者农药"英雄皮肤

0.引言 作为一款现象级游戏,王者荣耀,想必大家都玩过或听过,游戏里中各式各样的英雄,每款皮肤都非常精美,用做电脑壁纸再合适不过了。本篇就来教大家如何使用Python来爬取这些精美的英雄皮肤。 1.环境 操作系统:Windows / Linux Python版本:3.7.2 2.需求分析 我们打开《王者荣耀》官网,找定位到英雄列表的页面 可直接点此链接: https://pvp.qq.com/...

Python专栏 1万+

Python爬取王者荣耀英雄皮肤图片

Python爬取王者荣耀英雄皮肤图片前言思路分析编码案例源码附图总结 前言 以前写过类似的博客,利用Java爬取王者荣耀英雄皮肤图片,当时是利用 jsoup包来对目标网页进行解析。 可笑的是当时找图片的链接找了好久,处理字符串,拼接完整图片路径弄了半天,感觉还是比较麻烦的,原因之一就是当时找的链接地址是找的背景图: 殊不知,链接地址不用这么麻烦,王者荣耀官网提供得明明白白,右键单击检查某个皮肤的头像: 图片的地址其实就是这个data-imgname,每个英雄有几个皮肤,则链接最后的那个数字

发光吖的博客 2万+

利用python爬虫王者荣耀英雄皮肤(思路+代码)

纯属无聊的小爬虫,技术含量不高勿喷… 一.爬取思路: 1.找到王者荣耀官网的英雄资料列表页 2.按F12查找英雄链接所在的标签,再按ctrl+shift+c移动鼠标移到不同英雄头像处,发现英雄列表都在一个ul下的li下,链接和信息都在a标签下 3.编写正则表达式获取英雄链接列表,以及相关信息(部分代码) def getLink(html): soup=BeautifulSoup(html,...

歪歪的博客 1万+

Python爬虫——手把手教你爬取王者荣耀英雄皮肤

大家好!我是霖hero 大家知道目前最火的手游是哪个嘛,没错,就是王者荣耀,这款手游想必大家都听过或者玩过吧,里面有106个英雄,几百个英雄皮肤,今天我来手把手教你们把几百个皮肤都爬取下来。 Python基础 我们先来讲一些Python基础知识,一是待会可能会用到这些Python基础知识,方便Python基础差的同学更好地理解,二是为了巩固基础,我们一直学下去,一定要回头看一看,回顾回顾基础。 基础好的可以直接跳过这一节。 Python内置函数zip zip() 函数用于将可迭代的对象作为参数,

霖hero 4839

Python爬虫实战案例——王者荣耀皮肤抓取

就是因为图片是二进制数据,而前面的是json数据,那么现在获取的是图片,就要进行二次请求,进行.content。但我们放大仔细看发现,这个并不是我们的目标,因为它并不是最大,最高清的,那么到底在哪呢?我们要抓取皮肤其实就是相当于抓图片,那么像这种大网站,大批量的图片它基本上是在一个文件里面,那么我们首要目的就是要找到这个文件所在地,打开浏览器调试面板,进行刷新。唉,非常明显的高清无码大图片了吧,但仔细想想,我现在只是抓到了一张而已,但王者荣耀官网可是有非常多的,那我该如何进行批量抓取呢?

weixin_53707653的博客 7944

Python实战---王者荣耀皮肤爬虫

文章目录方法1方法2 作为王者荣耀的老玩家,今天教大家如何用python爬虫获取王者荣耀皮肤 本文将介绍两种王者荣耀皮肤的爬取方法,一种比较简单的,一种复杂的方法供大家学习。 首先先进去王者荣耀官方网站:王者荣耀 进入开发者工具找到英雄皮肤所在位置,图中herolist.json就是我们需要找的英雄列表,包括英雄编号、英雄名称、影响类型、皮肤等信息,复制url:http://pvp.qq.com/web201605/js/herolist.json路径 方法1 见注释 # 导入所需要的模块 import

weixin_48678602的博客 7074
上一篇: 零基础转行Python,往这个方向走,绝对没有错
下一篇: 0基础学Python需要掌握的基础知识!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值