资讯专栏INFORMATION COLUMN

⚡王者农药皮肤图片获取!⚡

StonePanda / 1609人阅读


完成目标:
  获取王者官网英雄介绍页面高清图片


一、前言

  王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了。我们今天的重点是爬取王者荣耀所有英雄的所有皮肤!

二、环境准备

编辑器:pycharm

用到的库:requests、lxml

三、具体实现

1、所有英雄信息获取

  打开官网,进入英雄资料页面,通过开发者工具,得到所有的英雄的数据


  每一个英雄资料为json格式,共106个,其中一个显示如下:

  解码后,名称如下:

{	"cname": "廉颇", # 英雄名称	 "ename": 105, # 英雄编号	 "hero_type": 3, # 英雄类型	 "new_type": 0, 	 "skin_name": "正义爆轰|地狱岩魂", # 英雄皮肤名称	 "title": "正义爆轰" # 当前皮肤 }

  这里主要需要的是 cname、ename、skin_name,skin_name用于获取皮个数

2、分析图片url

  打开一个英雄的详情页,打开开发者工具,以为云樱为例,一共两个皮肤,分别在两个li标签中,因此循环两次就可以全部拿到,也就是为什么之前要获取skin_name的原因

  观察url,寻找规律,其中前面的【//game.gtimg.cn/images/yxzj/img201606/skin/hero-info/】都是固定的,后面的是每个英雄的ename,然后ename-bigskin-skin_name的长度,因此,只要对这个url进行请求就可以得到高清壁纸

//game.gtimg.cn/images/yxzj/img201606/skin/hero-info/538/538-bigskin-1.jpg//game.gtimg.cn/images/yxzj/img201606/skin/hero-info/538/538-bigskin-2.jpg

3、具体实现

from pprint import pprintimport requestsif __name__ == "__main__":    headers = {        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36 Edg/92.0.902.84"    }    baseurl = "https://pvp.qq.com/web201605/js/herolist.json"    r = requests.get(url=baseurl, headers=headers)    data = r.json() # 英雄资料,包含cname、ename、skin_name    for i in data:        pprint(i) # 使用pprint打印数据原始格式                cname = i["cname"]        ename = i["ename"]                try:            skin_name = i["skin_name"].split("|") # 其中马超没有skin_name        except Exception as e:            print(e)                    for skin_num in range(1, len(skin_name) + 1):            sk_url = "http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/" + str(ename) + "/" + str(                ename) + "-bigskin-" + str(skin_num) + ".jpg" # url拼接            try:                data = requests.get(url=sk_url, headers=headers).content                with open("img/" + cname + "-" + skin_name[skin_num - 1] + ".jpg", "wb")as fp:                    fp.write(data)            except Exception as e :                print(e)        print(ename,"下载完成...")

4、结果

四、最后

  中间会有skin_name异常,一定要捕获异常,保证程序一直执行下去,并且出现了几次IP异常,下次尝试使用代理。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/118786.html

相关文章

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

    摘要:本篇就来教大家如何使用来爬取这些精美的英雄皮肤。有了英雄编号的对应关系,再找寻下英雄皮肤的链接规律。将图片保存下来,并以英雄名称皮肤序号方式命名效果展示最终的爬取效果如下图所示。 showImg(https://segmentfault.com/img/remote/1460000018627654); 0.引言 作为一款现象级游戏,王者荣耀,想必大家都玩过或听过,游戏里中各式各样的英...

    马龙驹 评论0 收藏0
  • Python实战---王者荣耀皮肤爬虫

    摘要:文章目录方法方法作为王者荣耀的老玩家,今天教大家如何用爬虫获取王者荣耀皮肤本文将介绍两种王者荣耀皮肤的爬取方法,一种比较简单的,一种复杂的方法供大家学习。 文章目...

    zorro 评论0 收藏0
  • 为什么“王者荣耀”让你那么上瘾?

    摘要:敌军还有秒钟到达战场,请做好准备研究产品,王者荣耀为什么这么火它的用户成长体系是怎样的用户到底是怎么上瘾的作为产品经理,有哪些是可以借鉴学习的本文的小编将从上瘾模型,全面分析王者荣耀到底是怎么一步步让用户上瘾的。 敌军还有5秒钟到达战场,请做好准备!研究产品,王者荣耀为什么这么火?它的用户成长体系是怎样的?用户到底是怎么上瘾的?作为产品经理,有哪些是可以借鉴学习的! 本文的小编将从Ho...

    hot_pot_Leo 评论0 收藏0
  • 常用设计模式——策略模式

    摘要:策略模式的使用场景针对同一类型问题的多种处理方式,仅仅是具体行为有差别时需要安全地封装多种同一类型的操作时出现同一抽象类有多个子类,而又需要使用或者来选择具体子类时。抽象策略角色这是一个抽象角色,通常由一个接口或抽象类实现。 写代码时总会出很多的if…else,或者case。如果在一个条件语句中又包含了多个条件语句就会使得代码变得臃肿,维护的成本也会加大,而策略模式就能较好的解决这个问...

    sumory 评论0 收藏0

发表评论

0条评论

StonePanda

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<