《王者荣耀》《英雄联盟》等游戏官网皮肤图片Python爬取,你知道了吗?

本文介绍了如何使用Python爬虫抓取《王者荣耀》和《英雄联盟》等游戏的英雄皮肤图片。通过分析游戏官网结构,获取英雄对应的数字,模拟图片URL,最终实现图片的批量下载。适合新手学习Python爬虫。
摘要由CSDN通过智能技术生成

在这里插入图片描述

本文简介:本文使用Python制作爬虫,来爬取《英雄联盟》《王者荣耀》《神之浩劫》等游戏官方网站的英雄皮肤图片。可以作为新手爬虫的练手实战案例!!

对于腾讯的这三款MOBA游戏,其中《王者荣耀》和《英雄联盟》大部分同学可能都不会陌生。对于MOBA游戏,总会让人感叹:不怕神一样的对手,就怕猪一样的队友。。。。。。当然自己也有一顿操作0:5的经历。。。。。。

在浏览这些游戏官方网站的时候发现英雄的皮肤很好看,例如这一张:
在这里插入图片描述
想拿来做电脑壁纸。于是就打开开发者工具找到了这张壁纸的地址下载下来。但是我还想要赵云的其他皮肤壁纸。。。。。。还想要其他英雄的所有皮肤壁纸。。。。。。还想要《英雄联盟》《神之浩劫》的皮肤壁纸。。。。。。这样就用到爬虫了!!

这里主要讲解《王者荣耀》的爬取方法,其他类似。

  • 《王者荣耀》
  • 所有英雄

首先进入所有英雄列表,你会看到下图:
在这里插入图片描述
在这个网页中包含了所有的英雄,头像及英雄名称。

  • 单个英雄

点击其中一个英雄的头像,例如第一个“百里守约”,进去后如下图

在这里插入图片描述
“百里守约”里面有两个皮肤图片(如右下角所示)。我们就是要抓取这样的图片(注意:不是右下角那两张小图,而是如上图所示中的大图)。在这个网页中查看“百里守约”的网址,可以看到网址是:https://pvp.qq.com/web201605/herodetail/196.shtml。其实网址中196.shtml以前的字符都是不变的,变化的只是196.shtml。那么196是什么呢?乍一看毫无意义,其实它是“百里守约”这个英雄所对应的数字(我也不知道为啥这样对应!!)。也就是说,要想爬取图片你就应该进入每个英雄皮肤图片所在的网址。就像上图所示的“百里守约”。而要爬取所有英雄的图片,就应该有所有单个英雄的网址。所有英雄的网址的关键就是每个英雄对应的数字。那么这些数字怎么找呢?

在这里还是要推荐下我自己建的Python开发学习群:810735403,群里都是学Python开发的,如果你正在学习Python ,欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2020最新的Python进阶资料和高级开发教程,欢迎进阶中和进想深入Python的小伙伴!

  • 英雄数字

在所有英雄列表中,打开浏览器的开发者工具(F12),刷新,找到一个json格式的文件,如图所示:
在这里插入图片描述
这时就会看到所有英雄对应的数字了。在上图所示的Headers中可以找到该json文件对应的网址形式。将其导入Python,把这些数字提取出来,然后模拟出所有英雄的网址即可(网址的格式在上一小节中已经提过了)。

前面几个小节的代码如下(我的是Ubuntu(Linux)系统):

#爬取王者荣耀英雄图片
#导入所需模块

import requests
import re
import os

#导入json文件(里面有所有英雄的名字及数字)

url='http://pvp.qq.com/web201605/js/herolist.json'  #英雄的名字json
head={
   'User-Agent':'换成你自己的head'}
html = requests.get(url,headers = head)
html=requests.get(url)
html_json=html.json()

#提取英雄名字和数字

hero_name=list(map(lambda x:x['cname'],html_json)) #名字
hero_number=list(map(lambda x:x['ename'],html_json)) #数字
  • 下载图片

现在可以进入所有英雄的网址了,可以爬取网址下的图片了。进入一个英雄的网址,打开开发者工具,在NetWork下刷新并找到英雄的皮肤图片(记住是大图)。如图所示:
在这里插入图片描述
然后在Headers中查看该图片的网址。会发现皮肤图片是有规律的。我们可以用这样的方式来模拟图片网址:‘http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/'+str(v)+'/'+str(v)+'-bigskin-'+str(u)+'.jpg’,在该网址中只有str(v)与str(u)是改变的(str( )是Python中的一个函数),str(v)是英雄对应的数字,str(u)只是图片编号,例如第一个图片就是1,第二个就是2,第三个。。。。。。而一个英雄的皮肤应该不会超过12个(如果你不放心可以将这个值调到20等)。既然英雄皮肤的网址也有了,下面就是下载了!!

下载的代码如下(有些地址要换成你自己的):

def main():  #用于下载并保存图片
    ii=0
    for v in hero_number:
        os.mkdir("/home/wajuejiprince/图片/WZRY/"+hero_name[ii]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值