当前位置: 首页 > news >正文

Python爬虫获取王者荣耀英雄全皮肤图片,并下载到本地

文章目录

  • 下载结果
  • 完整代码
  • 运行效果

下载结果

在这里插入图片描述

在这里插入图片描述

完整代码

import requests
import json
import os
import timedef get_hero_info():# 英雄的全部信息的urlhero_info = 'https://pvp.qq.com/web201605/js/herolist.json'# 获取英雄的全部信息response = requests.get(hero_info)# 转为字典格式hero_info_dict = json.loads(response.text)return hero_info_dictdef downloads_img():hero_info_dict = get_hero_info()for hero in hero_info_dict:# 获取单个英雄的名字hero_name = hero['cname']# 获取英雄的IDhero_num = hero['ename']# 图片保存的根路径hero_image_path = 'G:\\imgs\\' + hero_name# 创建文件夹os.mkdir(hero_image_path)print(hero_name + '皮肤正在下载....:')# 判断英雄是否有皮肤if 'skin_name' in hero:hero_skins = hero['skin_name']# 判断英雄皮肤个数是否大于1if '|' in hero_skins:# 将英雄的皮肤姓名以 | 分隔开hero_skin_list = hero_skins.split('|')# 英雄的皮肤个数hero_skin_count = len(hero_skin_list)for hero_skin_num in range(hero_skin_count):# 英雄的皮肤名字hero_skin_name = hero_skin_list[hero_skin_num]# 英雄皮肤图片的url地址hero_skin_url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' + str(hero_num) + '/' + str(hero_num) + '-bigskin-' + str(hero_skin_num + 1) + '.jpg'# 将图片转为字节形式image_content = requests.get(hero_skin_url).content  # 请求url# 保存图片with open(hero_image_path + '\\' + hero_name + '-' + hero_skin_name + '.jpg', 'wb') as image:image.write(image_content)print("  【%s】皮肤下载完毕" % hero_skin_name)time.sleep(1)if __name__ == '__main__':start = time.time()downloads_img()end = time.time()print('共耗时' + str(end - start) + '秒')

代码解释

  • https://pvp.qq.com/web201605/js/herolist.json是官方的英雄信息数据,格式如下
  • 在这里插入图片描述
  • 从中先获取英雄都是有哪些皮肤,并且获取皮肤的名称
  • 根据英雄的ename获取英雄的唯一标识符,进一步获取皮肤的图片地址
hero_skin_url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/' + str(hero_num) + '/' + str(hero_num) + '-bigskin-' + str(hero_skin_num + 1) + '.jpg'

运行效果

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 在mysql中delete和truncated的相同点和区别点
  • Detrs beat yolos on real-time object detection
  • 大模型笔记3 Longformer for Extractive Summarization训练
  • 351_C++_自定义list容器的sort排序规则sortFileName,函数调用运算符 operator() 的重载,它使得一个对象可以像函数一样被调用
  • 支付通道安全:应对黑客攻击的策略与实践
  • 【SC05B】触摸芯片-高灵敏度、强抗干扰能力和稳定性
  • Matlab 判断直线上一点
  • Vue项目中禁用ESLint的几种常见方法
  • SSLRec代码分析
  • 从概念到完成:Midjourney——设计思维与AI技术的完美结合
  • 桃园南路上的红绿灯c++
  • C#身份证核验、身份证查询API、身份认证接口
  • 使用pip或conda离线下载安装包,使用pip或conda安装离线安装包
  • Django ORM中ExpressionWrapper的用途
  • 期货量化交易客户端开源教学第八节——TCP通信服务类
  • 【翻译】babel对TC39装饰器草案的实现
  • Angular Elements 及其运作原理
  • classpath对获取配置文件的影响
  • Intervention/image 图片处理扩展包的安装和使用
  • JavaScript设计模式之工厂模式
  • Java的Interrupt与线程中断
  • Terraform入门 - 1. 安装Terraform
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 构建工具 - 收藏集 - 掘金
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 数据科学 第 3 章 11 字符串处理
  • 一个SAP顾问在美国的这些年
  • 用jQuery怎么做到前后端分离
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • ​iOS实时查看App运行日志
  • ​如何防止网络攻击?
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #stm32驱动外设模块总结w5500模块
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (2024.6.23)最新版MAVEN的安装和配置教程(超详细)
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (Oracle)SQL优化基础(三):看懂执行计划顺序
  • (pojstep1.3.1)1017(构造法模拟)
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (五)activiti-modeler 编辑器初步优化
  • (新)网络工程师考点串讲与真题详解
  • (一)Java算法:二分查找
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)关于多人操作数据的处理策略
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法