42. 疯狂爬取王者荣耀所有皮肤高清海报(文末源码)

目录

前言

目的

思路

代码实现

1. 导包,部署好环境

2. 伪装请求头

3. 访问英雄列表,获取英雄ID

4. 分别访问各英雄主页,查看图片详情

5. 写入本地文件夹(文件夹自动命名)

完整源码

运行效果

总结


前言

阔别已久,各位粉丝朋友们。

UP前段时间忙于期末和出国事宜,所以很久没有更新我们的爬虫专栏。今天开始我们继续不定期更新一些有趣的小案例,当然,不会很越界,UP本人使用爬虫也是够用即可~爬虫虽好,过度可是会喜提银手镯的!

好了,闲话少叙,我们今天带来的是在王者荣耀官网批量下载所有英雄的皮肤图片,并按英雄名称归类放于同一个文件夹下,效果如图:

怎么样,是不是特别井井有条,并且图片质量是很高的,下面就让我们开始今天的教程~


目的

爬取王者荣耀官网所有英雄的高清皮肤海报


思路

1. 导包,部署好环境

2. 伪装请求头

3. 访问英雄列表,获取英雄ID

4. 分别访问各英雄主页,查看图片详情

5. 写入本地文件夹(文件夹自动命名)


代码实现

1. 导包,部署好环境

# 发送请求的模块 pip install requests
import requests
# 解析html代码的工具 lxml    pip install lxml
from lxml import etree
import os
from time import sleep

2. 伪装请求头

# 伪装自己
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36',# 'referer': 'https://pvp.qq.com/web201605/herolist.shtml'
}hero_list_url = 'https://pvp.qq.com/web201605/js/herolist.json'
hero_list_resp = requests.get(hero_list_url, headers=headers, verify=False)

3. 访问英雄列表,获取英雄ID

for h in hero_list_resp.json():ename = h.get('ename')cname = h.get('cname')# 访问英雄主页hero_info_url = f'https://pvp.qq.com/web201605/herodetail/{ename}.shtml'hero_info_resp = requests.get(hero_info_url, headers=headers)hero_info_resp.encoding = 'gbk'e = etree.HTML(hero_info_resp.text)

4. 分别访问各英雄主页,查看图片详情

    names = e.xpath('//ul[@class="pic-pf-list pic-pf-list3"]/@data-imgname')[0]names = [name[0:name.index('&')] for name in names.split('|')]# 发送请求 for i, n in enumerate(names):resp = requests.get(f'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{ename}/{ename}-bigskin-{i + 1}.jpg',headers=headers)# 接收服务器响应的图片(皮肤)

5. 写入本地文件夹(文件夹自动命名)

        # 保存图片(皮肤)if not os.path.exists(f'./13_skins/{cname}'):os.makedirs(f'./13_skins/{cname}')with open(f'./13_skins/{cname}/{n}.jpg', 'wb') as f:f.write(resp.content)print(f'已下载皮肤: {n}')sleep(1)

完整源码

# 发送请求的模块 pip install requests
import requests
# 解析html代码的工具 lxml    pip install lxml
from lxml import etree
import os
from time import sleep# 伪装自己
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36',# 'referer': 'https://pvp.qq.com/web201605/herolist.shtml'
}hero_list_url = 'https://pvp.qq.com/web201605/js/herolist.json'
hero_list_resp = requests.get(hero_list_url, headers=headers, verify=False)
# print(hero_list_resp.json())
for h in hero_list_resp.json():ename = h.get('ename')cname = h.get('cname')# 访问英雄主页hero_info_url = f'https://pvp.qq.com/web201605/herodetail/{ename}.shtml'hero_info_resp = requests.get(hero_info_url, headers=headers)hero_info_resp.encoding = 'gbk'e = etree.HTML(hero_info_resp.text)names = e.xpath('//ul[@class="pic-pf-list pic-pf-list3"]/@data-imgname')[0]names = [name[0:name.index('&')] for name in names.split('|')]# 发送请求 for i, n in enumerate(names):resp = requests.get(f'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{ename}/{ename}-bigskin-{i + 1}.jpg',headers=headers)# 接收服务器响应的图片(皮肤)# 保存图片(皮肤)if not os.path.exists(f'./13_skins/{cname}'):os.makedirs(f'./13_skins/{cname}')with open(f'./13_skins/{cname}/{n}.jpg', 'wb') as f:f.write(resp.content)print(f'已下载皮肤: {n}')sleep(1)

运行效果


总结

今天我们学习了如何爬取王者荣耀官网高清皮肤海报,下期想看什么内容欢迎在评论区留言或者私信UP~

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

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

相关文章

SQL Server数据库 -- 索引与视图

文章目录 一、索引 聚集索引非聚集索引二、视图三、自定义函数 标量函数表值函数四、游标五、总结 前言 在学习完创建库表、查询等知识点后,为了更加方便优化数据库的存储和内容,我们需要学习一系列的方法例如索引与视图等等,从而使我们更加…

用 docker 创建 jmeter 容器,能做性能测试?

我们都知道,jmeter 可以做接口测试,也可以用于性能测试,现在企业中性能测试也大多使用 jmeter。docker 是最近这些年流行起来的容器部署工具,可以创建一个容器,然后把项目放到容器中,就可以构建出一个独立的…

如何使Python Docker镜像安全、快速、小巧

一、说明 在微服务领域,拥有安全、高效和紧凑的 Docker 映像对于成功部署至关重要。本博客将探讨有助于构建此类映像的关键因素,包括不以 root 用户身份运行映像的重要性、在构建映像时更新和升级包、在编写 Dockerfile 指令时考虑 Docker 的层架构&…

【torch.nn.PixelShuffle】和 【torch.nn.UnpixelShuffle】

文章目录 torch.nn.PixelShuffle直观解释官方文档 torch.nn.PixelUnshuffle直观解释官方文档 torch.nn.PixelShuffle 直观解释 PixelShuffle是一种上采样方法,它将形状为 ( ∗ , C r 2 , H , W ) (∗, C\times r^2, H, W) (∗,Cr2,H,W)的张量重新排列转换为形状为…

APT80DQ40BG-ASEMI快恢复二极管APT80DQ40BG

编辑:ll APT80DQ40BG-ASEMI快恢复二极管APT80DQ40BG 型号:APT60DQ20BG 品牌:ASEMI 封装:TO-3P 恢复时间:≤50ns 正向电流:80A 反向耐压:400V 芯片个数:双芯片 引脚数量&…

ArcGIS Pro字段操作代码汇总

属性表是GIS数据的重要组成部分,有了属性表才可以进行分析和分类配色等操作,这里为大家介绍一下ArcGIS Pro中字段操作的相关代码,希望能对你有所帮助。 关键词搜索 打开属性表,点击按属性选择,如下图所示。 点击按属…

利用 OLE 对象漏洞的 HWP 恶意文件浮出水面

ASEC 分析人员发现了一个利用 OLE 对象的恶意 HWP 文件,尽管其使用了 2020 年就被识别的恶意 URL,但仍然使用了 Flash 漏洞(CVE-2018-15982),需要用户谨慎对待。 打开 HWP 文件时会在 %TEMP%文件夹中生成如下文件。攻…

【多音音频测试信号】具有指定采样率和样本数的多音信号,生成多音信号的相位降低波峰因数研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Java-day07(面向对象-3,4)

继承 将多个类中共有的属性,方法剥离出来单独创建一个共有类,当需要使用共有的属性与方法时,就可以通过继承(extends)来调用共有的属性与方法。通过"class A extends B" 来实现类的继承(子类:A 父类&#x…

微前端初识

文章目录 微前端的发展历史微前端的定义微前端的特点使用微前端面临的挑战微前端常用技术方案及优缺点路由分发式微前端iframesingle-spaqiankunwebpack5: module federationWeb Component 微前端的发展历史 微前端在2016年首次出现在TWTR(ThoughtWorks Technology…

MySQL之深入InnoDB存储引擎——Undo页

文章目录 一、UNDO日志格式1、INSERT操作对应的UNDO日志2、DELETE操作对应的undo日志3、UPDATE操作对应的undo日志1)不更新主键2)更新主键的操作 3、增删改操作对二级索引的影响 二、UNDO页三、UNDO页面链表四、undo日志具体写入过程五、回滚段1、回滚段…

java版直播商城平台规划及常见的营销模式 电商源码/小程序/三级分销+商城免费搭建 bbcbbc

​ Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 1. 涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务…

Mysql主从搭建 基于DOCKER

创建目录 #主节点目录 mkdir -p /home/data/master/mysql/#从节点目录 mkdir -p /home/data/slave/mysql/创建配置文件 # 主节点配置 touch /home/data/master/mysql/my.cnf# 从节点配置 touch /home/data/slave/mysql/my.cnf编辑配置文件 主节点配置文件 vim /home/data/m…

算法通关村第五关——n数之和问题解析

1. 两数之和问题 力扣第1题就是两数之和问题,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一…

Ishikawa

Ishikawa 石川、鱼骨头、因果 其实我压根不知道 Ishikawa 这个日文就是石川,^_^,视乎也没啥影响

计算机网络基础

文章目录 网络协议初识协议分层OSI七层模型TCP/IP五层协议 网络传输基本流程网络传输流程数据包装和分用封装过程分用过程 网络中的地址管理IP地址MAC地址 网络协议初识 协议是一种约定。 协议分层 分层之后,每一层只关注自己同层的功能,只使用下层的接…

卷积神经网络实现MNIST手写数字识别 - P1

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍦 参考文章:365天深度学习训练营-第P1周:实现mnist手写数字识别🍖 原作者:K同学啊 | 接辅导、项目定制🚀 文章来源:K同…

【Hystrix技术指南】(1)基本使用和配置说明

这世间许多事物皆因相信而存在,所以人们亲手捏出了泥菩萨,却选择坚定的去信仰它。 分布式系统的规模和复杂度不断增加,随着而来的是对分布式系统可用性的要求越来越高。在各种高可用设计模式中,【熔断、隔离、降级、限流】是经常被…

一个好的人力资源管理系统包括哪些部分

阅读本文,您将具体详细了解:一个好的人力资源管理系统应该包括哪些部分。 人事部门是一家公司重要的职能部门之一,为公司的持续性、健康性发展提供人力保障。 然而,目前传统的人事管理方式在应对一些问题时存在着一些挑战。 例…