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

2023-11-16

目录

前言

目的

思路

代码实现

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~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • nextTick相关问题

    nextTick引出的问题 任务类型 JS中有两种任务类型 微任务 microtask 和宏任务 macrotask 在ES6中 microtask称为 jobs macrotask称为 task 宏任务 script 主代码块 setTi
  • ElasticSearch设置用户名密码访问

    1 启动trial license 30天试用 curl H Content Type application json XPOST http 127 0 0 1 19200 xpack license start trial acknow
  • PPTPD和PPTP client的安装指南

    PPTP是微软的 协议 被广泛采用 Linux下的服务端称为PPTPD 客户端称为PPTP PPTPD和PPTP client本身的安装并不复杂 可以说相当直观 但是如果要用到mppp加密 需要做的工作就要多一些 1 PPTPD的官方网站是
  • ECSHOP问题总结

    ecshop各个页面调用商品销售量方法 首页的推荐商品包括热销推荐和促销三个文件 只对热销商品为例 第一步 打开根目录 includes lib goods php文件 在文件末尾添加方法 function selled count goo
  • Python3,pandas自动处理exlce数据及yagmail邮件自动发送

    使用pandas来实现excel表中数据统计提取 及邮件发送功能 数据文件统计及发送 使用pandas处理Excel的数据 yagmail实现邮件自动发送 使用pandas处理Excel的数据 pandas怎么读取excel 我们已经分享了
  • Cadence Allegro学习---spin与rotate,group与room,assign color与hilight

    学习allegro的过程中 会遇到一些类似但不太相同的命令 总结一下 仅供参考 allegro类似命令比对 功能 命令 不同点 相同点 旋转 spin 旋转 是一个独立的命令 edit spin执行即可对symbol进行旋转 都可以进行器件
  • VUE不刷新页面的情况下更改浏览器链接后的query值

    在不刷新当前页面的情况下 不操作路由 但是要更改路由中的 query 参数 就好像页面只有简单路径 无 query 现在点击一下页面中的按钮 页面不刷新 但是要在浏览器的地址显示中将 query 参数修改掉 解决方法是 window his
  • 树莓派 (Raspberry pi) 中文乱码

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 树莓派的操作系统是基于Debian 默认是没有中文的 如果需要显示中文 需要安装中文库 以下内容提供树莓派安装中文库的方法 1 安装命令 进入树莓派终端方式 可以通过 pu
  • Java的 多态性

    多态分为编译时多态和运行时多态 其中编辑时多态是静态的 主要是指方法的重载 它是根据参数列表的不同来 区分不同的函数 通过编辑之后会变成两个不同的函数 在运行时谈不上多态 而运行时多态是动态的 它是通过绑定 来实现的 也就是多态 多态的实现
  • 千锋网络安全1-3days

    千锋 网络安全笔记 总篇 持续更新 服务器 Windows00 03 08 12 Linux centos 虚拟机两种架构 寄生 一般在电脑主机 原生 直接安装在硬件上 虚拟机部署准备 安装Windows xp win7 Windows s
  • ROS学习(1)——ROS1和ROS2的区别

    因为机器人是一个系统工程 它包括了机械臂结构 电子电路 驱动程序 通信框架 组装集成 调试和各种感知决策算法等方面 任何一个人甚至是一个公司都不可能完成机器人系统的研发工作 但是我们又希望自己能造出一个机器人跑一跑 验证一下自己的算法 所以
  • Flutter 必备插件推荐

    前面两个不用说 flutter enhancement suite gt flutter代码增强提示 flutter snippets gt flutter模板快速生成代码 flutter image sync gt flutter 同步照
  • PyTorch训练LSTM时loss.backward()报错

    训练用PyTorch编写的LSTM或RNN时 在loss backward 上报错 RuntimeError Trying to backward through the graph a second time but the buffer
  • 从3dmax导出fbx格式模型的过程

    1 设置好单位 厘米 centimeters 3dmax默认导出的fbx文件导入到unity3d中的默认缩放因子是0 01 而unity3d默认单位为米 Customize unites setup metric centimeters s
  • C语言课程设计-单项选择题标准考试系统

    需求分析 1 设计题目 单项选择题标准考试系统 2 系统功能需求分析 能够答题 插入试题 查看题库试题 删除题库试题 最后退出系统五个功能 二 概要设计 2 1系统总体设计框架 功能模块说明 答题模块 2 3插入试题模块 确定插入题目数 选
  • QT报错解决方案

    QT报错 error multiple definition of mywidget mywidget QWidget 解决方案 Project created by QtCreator 2022 01 08T20 00 17 QT cor
  • Unity3d快速入门

    https www zhihu com question 313621072 Unity3d如何快速入门 前言 进入一个领域 最直接有效的方法就是 寻找相关综述性文章 首先你需要对你入门的领域有个概括性的了解 这些包括 1 主流的学习社区与
  • objectARX 定义块、删除定义块或快参照

    1 如何定义块 2 根据定义删除块 块参照 第一步 通过块定义名称找到实体idlist 当前图形数据库 gt 块表 gt 检查该块定义是否在块表存在 gt 存在 则通过定义名称 找到实体idlist 第二步 遍历块表的实体id 若属于某定义
  • ASP.NET Core3.1 跨平台智能云管理系统源码

    ASP NET Core3 1 跨平台智能云管理系统源码 一个相当不错的系统框架 ASP NET Core3 1 跨平台智能云管理系统 什么是 ASP NET Core ASP NET Core 是一个由微软创建的 用于构建 web 应用
  • 42. 疯狂爬取王者荣耀所有皮肤高清海报(文末源码)

    目录 前言 目的 思路 代码实现 1 导包 部署好环境 2 伪装请求头 3 访问英雄列表 获取英雄ID 4 分别访问各英雄主页 查看图片详情 5 写入本地文件夹 文件夹自动命名 完整源码 运行效果 总结 前言 阔别已久 各位粉丝朋友们 UP