怎么样提取手机游戏里面的图片(我爬取了《王者荣耀》《英雄联盟》等游戏皮肤图片)

首页教程更新时间:2023-06-07 23:27:44

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

爱打游戏的各位肯定也是对游戏里面制作精美,妩媚无比或是帅气逼人的皮肤有一种莫名的热爱吧哈哈哈哈!对于腾讯的这三款MOBA游戏,其中《王者荣耀》和《英雄联盟》大部分人可能都不会陌生,反正没玩过肯定也听过。对于MOBA游戏,总会让人感叹:不怕神一样的对手,就怕猪一样的队友。。。。。。当然自己也有一顿操作猛如虎,一看操作0-5的经历。

在浏览这些游戏官方网站的时候发现英雄的皮肤很好看,例如这一张:

怎么样提取手机游戏里面的图片,我爬取了《王者荣耀》《英雄联盟》等游戏皮肤图片(1)

想拿这张来做电脑壁纸,于是就打开开发者工具找到了这张壁纸的地址下载下来。但是我还想要赵云的其他皮肤壁纸,还想要其他英雄的所有皮肤壁纸,还想要《英雄联盟》《神之浩劫》的皮肤壁纸,这样就用到爬虫啦!!

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

首先进入所有英雄列表,你会看到下图:

怎么样提取手机游戏里面的图片,我爬取了《王者荣耀》《英雄联盟》等游戏皮肤图片(2)

在这个网页中包含了所有的英雄,头像及英雄名称。

  • 单个英雄

点击其中一个英雄的头像,例如第一个“虞姬”,进去后如下图:

怎么样提取手机游戏里面的图片,我爬取了《王者荣耀》《英雄联盟》等游戏皮肤图片(3)

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

在所有英雄列表中,打开浏览器的开发者工具(F12),刷新,找到一个json格式的文件,如图所示:

怎么样提取手机游戏里面的图片,我爬取了《王者荣耀》《英雄联盟》等游戏皮肤图片(4)

这时就会看到所有英雄对应的数字了。在上图所示的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下刷新并找到英雄的皮肤图片(记住是大图)。如图所示:

怎么样提取手机游戏里面的图片,我爬取了《王者荣耀》《英雄联盟》等游戏皮肤图片(5)

然后在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]) #换成你自己的 os.chdir("/home/wajuejiprince/图片/WZRY/" hero_name[ii]) #换成你自己的 ii=ii 1 for u in range(12): onehero_links='http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' str(v) '/' str(v) '-bigskin-' str(u) '.jpg' im = requests.get(onehero_links) if im.status_code == 200: iv=re.split('-',onehero_links) open(iv[-1], 'wb').write(im.content)

执行完上面的代码后只需要执行main函数就行了

main()

爬取下来的图片是这样,每个文件夹里面是该英雄对应的图片,如下图:

怎么样提取手机游戏里面的图片,我爬取了《王者荣耀》《英雄联盟》等游戏皮肤图片(6)

  • 《英雄联盟》(美服)(两种方法)

这两种方法的区别就在于:第一种不用观察图片规律,直接提取图片网址;第二种和抓取《王者荣耀》类似,都是模拟图片地址。

  • 第一种

这一种是在提取图片网址的时候直接使用正则表达式来匹配出图片网址。代码如下:

#导入模块 import requests import re from bs4 import BeautifulSoup import os

得到英雄的名字:

url='http://ddragon.leagueoflegends.com/cdn/6.24.1/data/en_US/champion.json' #json里面含有所有英雄的名字 def get_hero_name(url): head={'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/59.0.3071.109 Chrome/59.0.3071.109 Safari/537.36'} html = requests.get(url,headers = head) heml_json=html.json() hero_name=heml_json['data'].keys() list_of_nameMax=list(hero_name) #此时的英雄名字的首字母是大写 list_of_nameMin=[] #此时的名字就是小写了 for ii in list_of_nameMax: name=ii.lower() list_of_nameMin.append(name) return list_of_nameMin

定义下载一个英雄图片的函数:

def get_onehero_img(name): #下载一个英雄的所有皮肤图片 url2='http://gameinfo.na.leagueoflegends.com/en/game-info/champions/' name '/' head={'User-Agent':'你自己的headers'} html = requests.get(url2,headers=head) contents=html.text soup=BeautifulSoup(contents) hero_img=soup.findAll('img') reg=re.compile(r'"http://ddragon.leagueoflegends.com/cdn/img/.*?.jpg"',re.S) hero_img_links=re.findall(reg,str(hero_img)) return hero_img_links

下载保存图片(保存地址要改):

def main(): #用于下载并保存图片 list_name=list_of_name for i in list_name: os.mkdir("/home/wajuejiprince/图片/LOL/" i) os.chdir("/home/wajuejiprince/图片/LOL/" i) ashe=get_onehero_img(i) for j in ashe: im=re.sub('"','',j) ir = requests.get(im) if ir.status_code == 200: ip=re.sub('"','',j) iu=re.split('/',im) open(iu[-1], 'wb').write(ir.content)

执行:

if __name__ == "__main__": list_of_name=get_hero_name(url) main()

  • 第二种

import requests import re import os

得到英雄名字:

url='http://ddragon.leagueoflegends.com/cdn/6.24.1/data/en_US/champion.json' #json里面含有所有英雄的名字 def get_hero_nameMax(url): head={'User-Agent':'你自己的headers'} html = requests.get(url,headers = head) heml_json=html.json() hero_name=heml_json['data'].keys() list_of_nameMax=list(hero_name) #此时的英雄名字的首字母是大写 return list_of_nameMax

下载图片(保存地址要改):

onehero_links=[] list_of_nameMax=get_hero_nameMax(url) def main(): #用于下载并保存图片 for fn in list_of_nameMax: os.mkdir("/home/wajuejiprince/图片/LOL2/" fn) os.chdir("/home/wajuejiprince/图片/LOL2/" fn) for v in range(20): onehero_links='http://ddragon.leagueoflegends.com/cdn/img/champion/splash/' fn '_' str(v) '.jpg' im = requests.get(onehero_links) if im.status_code == 200: iv=re.split('/',onehero_links) open(iv[-1], 'wb').write(im.content)

执行:

main()

  • 《神之浩劫》(美服)

import requests import re import os url='https://www.smitegame.com/gods/' head={'User-Agent':'你的head'} html = requests.get(url,headers = head) reg=re.compile(r'href="(.*?)">\n <img') #返回的是文本不用re.S hero_url=re.findall(reg,html.text) #得到所有英雄的网址 def one_hero_picture(ul): html_hero = requests.get(ul,headers = head) if html_hero.status_code == 200: reg2=re.compile(r'"background-image:url\((.*?)\)">\n',re.S) items2=re.findall(reg2,html_hero.text) del items2[0] return items2 #每个英雄的名字 hero_name=list(map(lambda x:re.split('/',x)[-2],hero_url)) def main(): #用于下载并保存图片 ii=0 for v in hero_url: os.mkdir("/home/wajuejiprince/图片/Smite/" hero_name[ii]) os.chdir("/home/wajuejiprince/图片/Smite/" hero_name[ii]) ii=ii 1 one_hero=[] one_hero=one_hero_picture(v) for u in one_hero: im = requests.get(u) if im.status_code == 200: iv=re.split('/',u) open(iv[-1], 'wb').write(im.content) main()

对于《神之浩劫》的代码有些英雄在json文件中的名字还不是该英雄网址的名字,记得应该是孙悟空等,只需将hero_name中这些英雄的名称改对即可(我没有改,所以没有下全)。

  • 最后--美图欣赏

蔡文姬:

怎么样提取手机游戏里面的图片,我爬取了《王者荣耀》《英雄联盟》等游戏皮肤图片(7)

狄仁杰:

怎么样提取手机游戏里面的图片,我爬取了《王者荣耀》《英雄联盟》等游戏皮肤图片(8)

贾克斯:

怎么样提取手机游戏里面的图片,我爬取了《王者荣耀》《英雄联盟》等游戏皮肤图片(9)

阿格尼:

怎么样提取手机游戏里面的图片,我爬取了《王者荣耀》《英雄联盟》等游戏皮肤图片(10)

嫦娥:

怎么样提取手机游戏里面的图片,我爬取了《王者荣耀》《英雄联盟》等游戏皮肤图片(11)

敖广:

怎么样提取手机游戏里面的图片,我爬取了《王者荣耀》《英雄联盟》等游戏皮肤图片(12)

ok,这样想要的皮肤图片就都出来啦!大家可以留言看看有没有志同道合的喜爱同款皮肤的伙伴哈哈哈哈~

,
图文教程
相关文章
热门专题
推荐软件
奇热小说
奇热小说
下载
QQ2019手机版
QQ2019手机版
下载
王者荣耀
王者荣耀
下载
百度浏览器迷你版
百度浏览器迷你版
下载
2345浏览器手机版
2345浏览器手机版
下载
网易邮箱
网易邮箱
下载
爱奇艺
爱奇艺
下载
网易云音乐
网易云音乐
下载
WPSOffice
WPSOffice
下载
优酷
优酷
下载
谷歌浏览器(Chrome)
谷歌浏览器(Chrome)
下载
迅雷看看播放器
迅雷看看播放器
下载
UC浏览器
UC浏览器
下载
QQ音乐
QQ音乐
下载
阿里旺旺买家版v9.12.10C官方版
阿里旺旺买家版v9.12.10C官方版
下载
360安全卫士v12.1官方版
360安全卫士v12.1官方版
下载
猜你喜欢
MagicPoser专业版
MagicPoser专业版
下载
Ucode++(进制编码转换工具)v1.8.3.1免费版
Ucode++(进制编码转换工具)v1.8.3.1免费版
下载
崩坏3礼包
崩坏3礼包
下载
爱淘宝app
爱淘宝app
下载
足球经理2017简体中文汉化包v1.1
足球经理2017简体中文汉化包v1.1
下载
青苗云视
青苗云视
下载
饥荒联机版AKATSUKI人物MOD
饥荒联机版AKATSUKI人物MOD
下载
巨龙战争
巨龙战争
下载
模拟农场15高固定杆拖车MOD
模拟农场15高固定杆拖车MOD
下载
连吧
连吧
下载
游艺宝
游艺宝
下载
KeepData
KeepData
下载
中铁核
中铁核
下载
侠盗猎车4车辆MOD之FordMustangShelbyGT350
侠盗猎车4车辆MOD之FordMustangShelbyGT350
下载
优分享摄影
优分享摄影
下载
传说勇者破解版
传说勇者破解版
下载