圆月山庄资源网 Design By www.vgjia.com
本文使用python的第三方模块requests爬取王者荣耀所有英雄的图片,并将图片按每个英雄为一个目录存入文件夹中,方便用作桌面壁纸
下面时具体的代码,已通过python3.6测试,可以成功运行:
对于所要爬取的网页连接可以通过王者荣耀官网找到,
# -*- coding: utf-8 -*- """ Created on Wed Dec 13 13:49:52 2017 @author:KillerTwo """ import requests import os hero_list_url = 'http://pvp.qq.com/web201605/js/herolist.json' hero_skin_root_url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' skin_base_dir = 'C:\\Users\\lwt27\\Pictures\\image\\heroskin\\' def get_ename(hero_json):#传入获取到的python对象,如hero_list_json '''获取英雄名称对应英雄编号的一个字典,例如{小乔:106,...}''' cname_ename = {} for hero in hero_json: cname_ename[hero['cname']] = hero['ename'] return cname_ename def get_skin_name(hero_json): #传入从网页获取到的json转换为python字典的对象 '''获取英雄名称对应的皮肤的所有皮肤名称的字典,例如 {'小乔':'恋之微风|万圣前夜|天鹅之梦|纯白花嫁|缤纷独角兽',...}''' cname_skin_name = {} for hero in hero_json: cname_skin_name[hero['cname']] = hero['skin_name'] return cname_skin_name def get_hero_skin_count(cname_skin_name): #传入英雄名称对应皮肤名称的字典 '''获取每个英雄对应的皮肤的个数,例如{'小乔':5,...}''' cname_skin_count = {} for item in cname_skin_name.items(): cname_skin_count[item[0]] = len(item[1].split('|')) return cname_skin_count def get_skin_name_url(skin_base_rul,cname_skin_count,cname_ename): #传入皮肤根地址和名称对应皮肤数量的字典和名称对应编号的字典 '''返回英雄名称对应的所有皮肤的url地址列表的字典,例如{小乔:[skin_url1,skin_url2],...}''' cname_url_list = {} for cname,count in cname_skin_count.items(): #print(cname) #print(count) #print(skin_base_rul) #print(cname_ename[cname]) base_url = skin_base_rul+str(cname_ename[cname])+'/'+str(cname_ename[cname])+'-bigskin-' #print(base_url) skin_url_list = [str(base_url)+str(num)+'.jpg' for num in range(1,count+1)] cname_url_list[cname] = skin_url_list return cname_url_list #print() d = get_skin_name_url(hero_skin_root_url,get_hero_skin_count(get_skin_name(hero_list_json)),get_ename(hero_list_json)) #print(d) def get_cname_skin_name(cname_skin_name):#传入名称对应皮肤名称字符串的字典 cname_skin_name_dict = {} #返回名称对应【皮肤名称的列表】的字典 for cname,skin_name_list in cname_skin_name.items(): skin_list = [name for name in skin_name_list.split('|')] cname_skin_name_dict[cname] = skin_list return cname_skin_name_dict #s = get_skin_name(hero_list_json) #print(s) #f = get_cname_skin_name(s) #print(f) def get_hero_skin(cname_url_list,cname_skin_name):#传入名称对应【皮肤名称列表】的字典和名称对应皮肤url列表的字典 # """获取每个英雄的图片""" for cname,skin_url in cname_url_list.items(): if mkdir(skin_base_dir+cname):#创建指定目录 os.chdir(skin_base_dir+cname) #进入到创建的目录 for i in range(len(skin_url)): file_name = cname_skin_name[cname][i]+'.jpg' r = requests.get(skin_url[i]) with open(file_name,'wb') as f: f.write(r.content) #创建目录 def mkdir(path): # 引入模块 import os # 去除首位空格 path=path.strip() # 去除尾部 \ 符号 path=path.rstrip("\\") # 判断路径是否存在 # 存在 True # 不存在 False isExists=os.path.exists(path) # 判断结果 if not isExists: # 如果不存在则创建目录 # 创建目录操作函数 os.makedirs(path) print(path+' 创建成功') return True else: # 如果目录存在则不创建,并提示目录已存在 print(path+' 目录已存在') return False return if __name__ == '__main__': hero_list_body = requests.get(hero_list_url) #请求英雄列表 hero_list_json = hero_list_body.json() #将英雄列表的获取的json数据转换为python对象 cname_ename = {} #英雄名称对应英雄编号的字典 cname__skin_name = {} #英雄名称对应皮肤名称字符串的字典 cname_skin_count = {} #英雄名称对应皮肤数量的字典 cname_skin_name_str_list = get_skin_name(hero_list_json) cname_skin_name_list = get_cname_skin_name(cname_skin_name_str_list) cname_skin_count = get_hero_skin_count(cname_skin_name_str_list) cname_ename = get_ename(hero_list_json) cnam_skin_url_list = get_skin_name_url(hero_skin_root_url,cname_skin_count,cname_ename) get_hero_skin(cnam_skin_url_list,cname_skin_name_list)
下面是保存抓取到的图片的文件夹样例:
上面就是抓取王者荣耀所有英雄皮肤的简单示例,上述的代码并没有使用python多线程执行抓取图片的函数,所以在执行的时候可能需要花费几分钟的时间,
以后在进行改进,添加使用python多线程执行抓取任务。
这篇用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
圆月山庄资源网 Design By www.vgjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
圆月山庄资源网 Design By www.vgjia.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月09日
2024年11月09日
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]