用python的requests第三方模块抓取王者荣耀所有英雄的皮肤
本文使用python的第三方模块requests爬取王者荣耀所有英雄的图片,并将图片按每个英雄为一个目录存入文件夹中,方便用作桌面壁纸
下面时具体的代码,已通过python3.6测试,可以成功运行:
对于所要爬取的网页连接可以通过王者荣耀官网找到,
1 # -*- coding: utf-8 -*- 2 """ 3 Created on Wed Dec 13 13:49:52 2017 4 5 @author:KillerTwo 6 """ 7 import requests 8 import os 9 hero_list_url = 'http://pvp.qq.com/web201605/js/herolist.json' 10 hero_skin_root_url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' 11 skin_base_dir = 'C:\\Users\\lwt27\\Pictures\\image\\heroskin\\' 12 13 14 def get_ename(hero_json):#传入获取到的python对象,如hero_list_json 15 '''获取英雄名称对应英雄编号的一个字典,例如{小乔:106,...}''' 16 cname_ename = {} 17 for hero in hero_json: 18 cname_ename[hero['cname']] = hero['ename'] 19 return cname_ename 20 21 def get_skin_name(hero_json): #传入从网页获取到的json转换为python字典的对象 22 '''获取英雄名称对应的皮肤的所有皮肤名称的字典,例如 23 {'小乔':'恋之微风|万圣前夜|天鹅之梦|纯白花嫁|缤纷独角兽',...}''' 24 cname_skin_name = {} 25 for hero in hero_json: 26 cname_skin_name[hero['cname']] = hero['skin_name'] 27 return cname_skin_name 28 29 def get_hero_skin_count(cname_skin_name): #传入英雄名称对应皮肤名称的字典 30 '''获取每个英雄对应的皮肤的个数,例如{'小乔':5,...}''' 31 cname_skin_count = {} 32 for item in cname_skin_name.items(): 33 cname_skin_count[item[0]] = len(item[1].split('|')) 34 return cname_skin_count 35 36 def get_skin_name_url(skin_base_rul,cname_skin_count,cname_ename): 37 #传入皮肤根地址和名称对应皮肤数量的字典和名称对应编号的字典 38 '''返回英雄名称对应的所有皮肤的url地址列表的字典,例如{小乔:[skin_url1,skin_url2],...}''' 39 cname_url_list = {} 40 for cname,count in cname_skin_count.items(): 41 #print(cname) 42 #print(count) 43 #print(skin_base_rul) 44 #print(cname_ename[cname]) 45 base_url = skin_base_rul+str(cname_ename[cname])+'/'+str(cname_ename[cname])+'-bigskin-' 46 #print(base_url) 47 skin_url_list = [str(base_url)+str(num)+'.jpg' for num in range(1,count+1)] 48 cname_url_list[cname] = skin_url_list 49 return cname_url_list 50 51 #print() 52 d = get_skin_name_url(hero_skin_root_url,get_hero_skin_count(get_skin_name(hero_list_json)),get_ename(hero_list_json)) 53 #print(d) 54 55 def get_cname_skin_name(cname_skin_name):#传入名称对应皮肤名称字符串的字典 56 cname_skin_name_dict = {} #返回名称对应【皮肤名称的列表】的字典 57 for cname,skin_name_list in cname_skin_name.items(): 58 skin_list = [name for name in skin_name_list.split('|')] 59 cname_skin_name_dict[cname] = skin_list 60 return cname_skin_name_dict 61 62 #s = get_skin_name(hero_list_json) 63 #print(s) 64 #f = get_cname_skin_name(s) 65 #print(f) 66 67 def get_hero_skin(cname_url_list,cname_skin_name):#传入名称对应【皮肤名称列表】的字典和名称对应皮肤url列表的字典 68 # """获取每个英雄的图片""" 69 for cname,skin_url in cname_url_list.items(): 70 71 if mkdir(skin_base_dir+cname):#创建指定目录 72 os.chdir(skin_base_dir+cname) #进入到创建的目录 73 74 for i in range(len(skin_url)): 75 file_name = cname_skin_name[cname][i]+'.jpg' 76 r = requests.get(skin_url[i]) 77 with open(file_name,'wb') as f: 78 f.write(r.content) 79 #创建目录 80 def mkdir(path): 81 # 引入模块 82 import os 83 # 去除首位空格 84 path=path.strip() 85 # 去除尾部 \ 符号 86 path=path.rstrip("\\") 87 # 判断路径是否存在 88 # 存在 True 89 # 不存在 False 90 isExists=os.path.exists(path) 91 # 判断结果 92 if not isExists: 93 # 如果不存在则创建目录 94 # 创建目录操作函数 95 os.makedirs(path) 96 print(path+' 创建成功') 97 return True 98 else: 99 # 如果目录存在则不创建,并提示目录已存在 100 print(path+' 目录已存在') 101 return False 102 return 103 104 if __name__ == '__main__': 105 106 hero_list_body = requests.get(hero_list_url) #请求英雄列表 107 hero_list_json = hero_list_body.json() #将英雄列表的获取的json数据转换为python对象 108 109 cname_ename = {} #英雄名称对应英雄编号的字典 110 cname__skin_name = {} #英雄名称对应皮肤名称字符串的字典 111 cname_skin_count = {} #英雄名称对应皮肤数量的字典 112 113 cname_skin_name_str_list = get_skin_name(hero_list_json) 114 cname_skin_name_list = get_cname_skin_name(cname_skin_name_str_list) 115 cname_skin_count = get_hero_skin_count(cname_skin_name_str_list) 116 cname_ename = get_ename(hero_list_json) 117 cnam_skin_url_list = get_skin_name_url(hero_skin_root_url,cname_skin_count,cname_ename) 118 get_hero_skin(cnam_skin_url_list,cname_skin_name_list)
下面是保存抓取到的图片的文件夹样例:
以上就是抓取王者荣耀所有英雄皮肤的简单示例,上述的代码并没有使用python多线程执行抓取图片的函数,所以在执行的时候可能需要花费几分钟的时间,
以后在进行改进,添加使用python多线程执行抓取任务。
转载于:https://www.cnblogs.com/yourblog/p/8035180.html
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤相关推荐
- python玩王者荣耀皮肤碎片怎么获得_用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例...
本文使用python的第三方模块requests爬取王者荣耀所有英雄的图片,并将图片按每个英雄为一个目录存入文件夹中,方便用作桌面壁纸 下面时具体的代码,已通过python3.6测试,可以成功运行: ...
- python爬虫-20行代码爬取王者荣耀所有英雄图片,小白也轻轻松松
1.环境 python3.6 需要用到的库: re.os.requests 2.简介 王者荣耀可以算得上是比较受欢迎的手游之一了,应该有不少的人都入坑过农药,我们今天的目的就是要爬取王者荣耀的高清英雄 ...
- python高清壁纸_爬虫 抓取王者荣耀所有英雄皮肤高清壁纸(完美版本)
[python]代码库import urllib.request import json import os import re # 皮肤下载地址 skin_link = 'https://game. ...
- python代码壁纸-爬虫 抓取王者荣耀所有英雄皮肤高清壁纸+超强注释
[python]代码库import urllib.request import re # 获取主页源码 url = 'https://pvp.qq.com/web201605/herolist.sht ...
- python爬取王者_爬虫 抓取王者荣耀所有英雄皮肤高清壁纸+超强注释
[python]代码库import urllib.request import re # 获取主页源码 url = 'https://pvp.qq.com/web201605/herolist.sht ...
- python代码手机壁纸_爬虫 抓取王者荣耀所有英雄皮肤高清壁纸+超强注
[python]代码库import urllib.request import re # 获取主页源码 url = 'https://pvp.qq.com/web201605/herolist.sht ...
- node.js(六)之crawler爬虫模块爬取王者荣耀官网所有英雄资源信息
node.js爬虫模块爬取王者荣耀所有英雄信息 一.准备工作 https://pvp.qq.com/web201605/herolist.shtml进入王者荣耀所有英雄页面: 你会看到所有的英雄,打开 ...
- 通过python requests第三方库抓取淘宝商品名称和信息价格
项目名称:淘宝爬虫之抓取商品标题和价格信息 任务背景: 公司要求提取各电商平台的咖啡机的价格信息,在淘宝开放平台找不到合适的API..获取价格就是为了产品定价,和将来打价格战. 实现用到的库:requ ...
- python玩王者荣耀皮肤_python 抓取王者荣耀皮肤 代码2年了 依旧可以抓取高清 王者皮肤...
#!/usr/bin/env python #-*- coding: utf-8 -*- """抓取王者荣耀皮肤""" importrequ ...
- python入门之爬虫------抓取王者荣耀英雄列表
抓取王者荣耀英雄列表及其对应的全部皮肤名称 目标 在王者荣耀官网抓取王者荣耀英雄列表,每个英雄拥有的皮肤数量,及其对应的全部皮肤名称. 过程分析 首先获得官网的herolist.json文件,里面包含 ...
最新文章
- RMAN-06214问题处理
- vue :src 文件路径错误
- Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析
- MATLAB教程目录
- SWIFT(Society for Worldwide Interbank Financial SWIFT Telecommunications---环球同业银行金融电讯协会)
- 【转】如何实现一个文件系统
- 漫画兔善搞2007-等待爱玛马士基号的垃圾
- React开发(261):react项目理解 ant design 控制多选
- mysql 指定数字排序_Mysql数据排序
- Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 359404 bytes) in
- ivar layout 相关知识点
- 武汉将投放5亿元消费券,4月19日微信率先开抢
- sap 双计量单位_[原创]浅谈MM模块的双计量单位(二)
- .net站点配置完后常见报错及解决措施
- ssm医院人事管理系统设计与实现 毕业设计源码111151
- 服务器linux杀网页木马,一次Linux服务器木马查杀经历
- linux系统双显卡切换显卡驱动,Linux 下双显卡切换
- 给计算机专业的同学一些建议
- android 控件属性大全
- 【苏小林主页】基于TP6和光年模板的个人主页