queryselectorall 怎么取name_用这个方法,我爬取了《王者荣耀》《英雄联盟》等游戏皮肤图片...

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

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

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

6867a21393c8f71610ab9c5840ad4fe8.png

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

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

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

e113f0d37444fd8080cfb0115bdb6aa6.png

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

  • 单个英雄

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

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

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

c3ff26a3c1d75383c47c3fec4a2a7cf4.png

这时就会看到所有英雄对应的数字了。在上图所示的Headers中可以找到该json文件对应的网址形式。将其导入Python,把这些数字提取出来,然后模拟出所有英雄的网址即可(网址的格式在上一小节中已经提过了)。

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

#爬取王者荣耀英雄图片#导入所需模块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)) #数字
  • 下载图片

现在可以进入所有英雄的网址了,可以爬取网址下的图片了。进入一个英雄的网址,打开开发者工具,在NetWork下刷新并找到英雄的皮肤图片(记住是大图)。如图所示:

d576625f4bd06d50dc02d0858017ce1d.png

然后在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()

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

5b97ca9b00d1f64c80f01d460a792af7.png
  • 《英雄联盟》(美服)(两种方法)

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

  • 第一种

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

#导入模块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: 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 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(r'href="(.*?)"> ',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中这些英雄的名称改对即可(我没有改,所以没有下全)。

  • 最后--美图欣赏

蔡文姬:

77a25bcc81d3ba550d099dce9eef9e30.png

狄仁杰:

7d5b464d58943d448e52264199b43980.png

贾克斯:

5d3d7419697198af7bd943f664b9a0ac.png

阿格尼:

5363e848b5cd714a269561600f3a6235.png

嫦娥:

e8cbb3b677e68fd24d0cecb637bc0703.png

敖广:

6eefd3f2a79347ba81d420f3c87cdde5.png

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/531820.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云端计算机可以玩游戏么,手机掌上云电脑是什么?为什么可以玩PC游戏?

原标题:手机掌上云电脑是什么?为什么可以玩PC游戏?经常会在一些短视频平台上看到别人用云电脑的应用在手机上玩PC游戏,那么这个掌上云电脑的应用到底是什么呢?为什么可以玩PC游戏呢?按照以往的理解&#xf…

计算机组策略怎么设置远程桌面,组策略 之   自动启用客户端远程桌面功能

在企业里进行管理的时候,有时需要利用远程桌面来管理客户端计算机,在一般情况下,往往需要客户端启用此功能,有没有好的办法,让客户端自动启用呢?当然可以,我们可以通过组策略的形式来完成。实施…

华北水利水电大学c语言程序设计四_我校代表队在“中国高等计算机大赛——团体程序设计天梯赛” 中喜获佳绩...

近日,第四届“中国高校计算机大赛——团体程序设计天梯赛”全国总决赛获奖名单公布,我校以全国高校排名第84位,河南省高校第4名的成绩获得河南省高校二等奖。我校派出的“NCWU_面壁者”,“NCWU_弹星者”和“NCWU_执剑人”三支队伍…

当我不再依赖你的时候说说_不要依赖任何人说说 不要指望别人的经典话

1、静下心慢慢变得沉稳,不再依赖任何人, 珍惜身边人 ,不强求不勉强每天都要很开心。2、的确没什么人可以陪你一辈子,所以在那些难熬的日子过去之后,将会不再依赖任何人成长。3、自己一个人走在路上,才发现依…

android 版本更新工具类_报表分析工具FastReport .Net 2021年超大版本更新,实现了对.NET 5的支持...

在FastReport .NET 2021.1的新版本中,我们实现了对.NET 5的支持。添加了新条形码-Deutsce Post Leitcode。将RTF转换为报告对象的算法已得到显着改进。并且还添加了用于转换数字的新功能。欢迎下载体验。(点击下方按钮下载)立即点击下载FastR…

poj2186Popular Cows(Kosaraju算法--有向图的强连通分量的分解)

1 /*2 题目大意:有N个cows, M个关系3 a->b 表示 a认为b popular;如果还有b->c, 那么就会有a->c 4 问最终有多少个cows被其他所有cows认为是popular!5 6 思路:强连通分量中每两个节点都是可达的&#xff…

Uvaoj10054 - The Necklace

1 /*2 题意:打印欧拉回路!3 思路:开始时不明白,dfs为什么是后序遍历? 4 因为欧拉回路本身是一条回路,那么我们在dfs时,可能存在提前找到回路,这条回路可能不是欧拉回路&…

s7-1200跟mysql_让西门子S7-1200直接连接MySQL数据库!!!

最近项目上有个需求,要把采集的数据存储到数据库中,当前西门子有很多方法,必读IDB,还有通过WINCC的脚本,第三方的软件等等,但是随着发展,有些需求希望设备直接到数据库,比如云端的RD…

win7个人计算机的ip地址,win7计算机ip地址查询_win7本机ip地址查询

2016-12-09 11:40:21查找计算机的ip地址的方法:点击你的电脑桌面左下角的“开始”找到“运行”点击运行, 在出现的对话框里面输入“cmd” 点击确定然后就会出现一个黑色的命令行窗口,你会看到“&...2016-12-19 15:59:44手机设置静态IP 1、点设置-线网络 2、WLAN…

最全的mysql 5.7.13_最全的mysql 5.7.13 安装配置方法图文教程(linux) 强烈推荐!

linux环境Mysql 5.7.13安装教程分享给大家,供大家参考,具体内容如下1系统约定安装文件下载目录:/data/softwareMysql目录安装位置:/usr/local/mysql数据库保存位置:/data/mysql日志保存位置:/data/log/mysq…

iis 日志 post数据_云原生日志的趋势(1):logscape和logiq

作为日志产品的PM,跟进国内外日志产品动向是个长期工作。这几天翻新一些历史记录,发现logscape自2017年开源以来,突然2019年10月又更新了一会。于是顺着翻翻logscape的github账号,起了兴致来写点文字。https://github.com/logscap…

大学计算机基础总结,大学计算机基础第二章总结

数:计算机的数据的基本形态是二进制数数制:可以直接进行数学计算数字码制:用来表示不同对象属性● 数制(计数体制)多位数中每一位的构成方法以及实现从低位到高位的进位规则(也叫做进制)▲ 常用数制:R进制有R个数码,数…

获取list泛型_泛型

泛型什么是泛型?为什么使用泛型?泛型的出现意味着编写的代码可以被不同类型的对象所重用,提升了代码的重用性。泛型的本质是参数化类型,即将所需操作的数据类型设置为一个参数。 举个实际中的栗子:我们需要设计一个柜子…

w10计算机字体怎么设置在哪里设置,如何设置修改win10系统电脑的显示字体

如何设置修改win10系统电脑的显示字体腾讯视频/爱奇艺/优酷/外卖 充值4折起今天给大家介绍一下如何设置修改win10系统电脑的显示字体的具体操作步骤。1. 首先鼠标左键开始,然后在菜单下的左下角选择设置图标。2. 进入Windows 设置后,单击个性化。3. 接着…

powerdesigner mysql 自增主键_PowerDesigner Mysql 主键自增、初始值、字符集

自增在你所要设为自增型的键上(比如你的id)双击,弹出一个Column Properties对话框,右下角有一个Identify的选择框,选中它OK,就可以了。 再去查看Preview,就能看到AUTO_INCREMENT。起始值默认自增字段从1开始, 如果需要…

计算机设置从u盘启动怎么办,电脑设置从u盘启动盘启动出现蓝屏该怎么解决?

电脑设置从u盘启动蓝屏怎么办?我们在电脑遇到系统等问题时,经常会选择使用u盘重装系统,这种重装方式可以说是目前最便捷实用的了。但是最近又有用户反映将U盘设置为第一启动项后,电脑没办法从u盘启动,出现了蓝屏的情况&#xff0…

ambari mysql jar_从零开始安装 Ambari (3) -- 安装 Ambari

1. 安装yum -y install ambari-server2. ambari server 需要一个数据库存储元数据,默认使用的 Postgres 数据库。默认的用户名和密码是: ambari/bigdata 。但是一般情况下,后面还要安装 hive 和 Ranger,也需要一个存元数据的数据库…

服务器2012系统在dos卸载,Windows系统下彻底删除Windows.old 文件夹的方法

系统是直接硬盘安装的,导致c盘产生了旧系统的文件夹Windows.old,占用很大的磁盘空间,删也删不掉,咋办?不要紧,下面大神来教你神操作!!!1、打开“计算机”,选择…

backupexec mysql_MySQL备份可能遇到的坑

MySQL备份工具,支持各种参数选项,使用不同的选项极有可能影响备份处理过程。本文使用我们常规认为合理的备份参数,测试/验证是否存在容易忽视的坑# 常规备份参数# mysqldumpshell> mysqldump --single-transaction --master-data2 -B repl…

win10虚拟机服务器错误怎么解决方法,虚拟机下安装win10系统后出现升级报错故障的解决方法【图文】...

现在的win10还是很挑系统的,兼容性有待进一步增强。有些在虚拟机环境下安装了win10的小伙伴,升级是很可能报以下错误的,升级你的ESX版本吧,5.5以下升级win10基本都是没戏的。VM workstation11以上是明确支持win10。不能升级win10怎…