当前位置: 首页 > 手游 > 曙光英雄

Python程序员教你如何用Python免费“偷”《王者荣耀》的皮肤!贼牛逼!

来源:网络 时间:2023-08-24 12:36:04
导读本文使用Python制作爬虫,来爬取《英雄联盟》《王者荣耀》《神之浩劫》等游戏官方网站的英雄皮肤图片。可以作为新手爬虫的练手实战案例!! 对于腾讯的这三款MOBA游戏,其中《王者荣耀》和《英雄联盟》大部分同学…
Python学习群:593088321

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

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

Python学习群:593088321

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

Python学习群:593088321
Python学习群:593088321

英雄数字

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

Python学习群:593088321

#爬取王者荣耀英雄图片#导入所需模块import requestsimport reimport os#导入json文件(里面有所有英雄的名字及数字)url=http://pvp.qq.com/web201605/js/herolist.json #英雄的名字jsonhead={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)) #数字

Python学习群:593088321

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

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.cont

Python学习群:593088321

第一种

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

#导入模块import requestsimport refrom bs4 import BeautifulSoupimport 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:

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

第二种

import requestsimport reimport 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 requestsimport reimport osurl=https://www.smitegame.com/gods/head={User-Agent:你的head}html = requests.get(url,headers = head)reg=re.compile(rhref="(.*?)">,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中这些英雄的名称改对即可(我没有改,所以没有下全)。

Python学习群:593088321

贾克斯:

Python学习群:593088321

阿兹尔:

Python学习群:593088321

阿格尼:

Python学习群:593088321

嫦娥:

Python学习群:593088321

敖广:

Python学习群:593088321

声明:本爬虫仅供个人娱乐学习,请不要用于任何商业目的或违法行为!!

如果你觉得本文章不错可以分享转发,谢谢!

Python学习群:593088321

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:704559159@qq.com

Top
加盟网