高清!手把手教你Python爬取LOL英雄皮肤套图

2023-10-31

作者: 锋小刀
微信搜索【Python与Excel之交】关注我的公众号查看更多内容
在这里插入图片描述

目标URL:

https://lol.qq.com/data/info-heros.shtml

里面是LOL所有英雄的头像和名称,本次的爬取任务是该网页中所有英雄的皮肤图片:
在这里插入图片描述

分析网页

点击任一英雄头像,进去该英雄的详情页,里面存放着该英雄的信息和皮肤图片,所以要获取该英雄皮肤就需要从前面的url中进入该详情页:
在这里插入图片描述我们点击鼠标右键查看网页源代码,发现网页不存在我们需要的内容,可以肯定该网页是动态加载的:
在这里插入图片描述
进入浏览器的开发者工具抓包,这里我们成功的抓取到存放英雄皮肤图片的url:
在这里插入图片描述
对比几条url,发现url后面的数字会发生变动,是不规则的,是每条url特有的id值,所以我们需要从网页中获取:

https://game.gtimg.cn/images/lol/act/img/js/hero/1.js
https://game.gtimg.cn/images/lol/act/img/js/hero/2.js
https://game.gtimg.cn/images/lol/act/img/js/hero/11.js

进入主页面,该网页依然是动态加载的,所以我们需要进行抓包:

在这里插入图片描述
得到以下url:

https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js

里面的heroId就是我们需要的id值了:
在这里插入图片描述
爬取思路:

  • 从主页面抓包获取真实url,从该url中获取每个英雄详情页url的id值;
  • 利用id值拼接成每个英雄详情页的url;
  • 从拼接成的url中获取英雄名称、英雄皮肤名称、英雄皮肤图片的url。
实战代码

获取详情页url的id值函数,这里网页是json数据格式,所以用.json()进行解析,然后要yield进行返回:

def name_data():
    url = 'https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'
    res = get_response(url).json()
    hero = res['hero']
    for i in hero:
        heroId = i['heroId']
        yield heroId

图片提取函数,这里的网页依然是用.json()进行提取,这里用os模块进行创建套图文件夹以及用英雄的名称进行命名文件夹,用英雄皮肤的名称+.jpg进行图片的保存:

def main_Img(html_url):
    res_ = get_response(html_url).json()
    skins = res_['skins']
    for e in skins:
        mainImg = e['mainImg']
        name = e['name']
        heroTitle = e['heroTitle']
        print(heroTitle)
        if not os.path.exists(f'./image/{heroTitle}/'):
            os.mkdir(f'./image/{heroTitle}/')
        file_name = f'image/{heroTitle}/' + name + '.jpg'
        save(mainImg, file_name)

创建并发任务:

executor = concurrent.futures.ThreadPoolExecutor(max_workers=10)
name_ = name_data()
for o in name_:
    url_data = f'https://game.gtimg.cn/images/lol/act/img/js/hero/{o}.js'
    executor.submit(main_Img, url_data)
executor.shutdown()

效果展示:
在这里插入图片描述

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

高清!手把手教你Python爬取LOL英雄皮肤套图 的相关文章

  • Python bash 管道

    我想将 python 脚本的输出通过管道传输到 bash 脚本 到目前为止我所做的是尝试使用os popen sys subprocess 并试图给出一个管道的例子 os popen echo P 1 1 591336 4927369 1
  • Django 和 VirtualEnv 开发/部署最佳实践

    只是好奇人们如何结合 virtualenv 部署 Django 项目 更具体地说 如何使生产虚拟环境与开发计算机正确同步 我使用 git 进行 scm 但 git 存储库中没有 virtualenv 我应该这样做 还是最好使用 pip fr
  • 在 Matplotlib 中选择标记大小

    我正在 matplotlib 中用方形标记绘制散点图 如下所示 我想实现这样的目标 这意味着我必须调整标记大小和图形大小 比例 以使标记之间没有空白 每个索引单元还应该有一个标记 x and y都是整数 所以如果y从 60 到 100 应该
  • 为什么我的查询在参数化后会中断?

    我有 2 张桌子 Sales and Product Sales可以将产品存储为Idn or Name 传统设计 和Type列指定实际type与之相关 Product等是连接的子集表into这个表来获取真实的数据 在这个例子中 Produc
  • 如何使用Python中的or-tools解决累积旅行商问题?

    累积旅行商问题 CTSP 的目标是最小化到达客户的时间总和 而不是总旅行时间 这与最小化总旅行时间不同 例如 如果一个人拥有无限的车辆 车辆与位置数量相同 并且目标是最大限度地减少到达位置的总时间 则可以为每个位置发送一辆车 因为这是满足所
  • Python:并行修改数组的简单方法

    这个问题可能听起来很简单 但作为 Python 并行化的新手 我肯定会遇到困难 我处理了 OpenMP for C 中的并行化问题 这要容易得多 我需要做的是并行修改矩阵的条目 就是这样 问题是 我无法使用简单的 joblib 库来做到这一
  • 具有动态特性的 Python 嵌套作用域

    需要帮助理解以下句子PEP 227 http www python org dev peps pep 0227 和Python 语言参考 http docs python org reference executionmodel html
  • python数据结构(类似设置)在添加重复项时抛出异常

    我正在寻找一种在添加重复元素时会引发异常的数据结构 我发现的最接近的是collections Counter gt gt gt from collections import Counter as counter gt gt gt c co
  • 从可变长度字符串中解析值的最佳方法是什么?

    假设我有一个由可变长度的逗号分隔的整数字符串 分割字符串并用值更新变量 如果存在 的最佳方法是什么 目前 我有以下内容 a b c 10 10 1 default values mylist int x for x in input spl
  • Python 删除额外的特殊 unicode 字符

    我正在 python 中处理一些文本 它内部已经采用 unicode 格式 但我想删除一些特殊字符并用更标准的版本替换它们 我目前有一条看起来像这样的线路 但它变得越来越复杂 我发现它最终会带来更多麻烦 tmp infile lower r
  • TensorFlow 运算符重载

    有什么区别 tf add x y and x y 在 TensorFlow 中 当您使用以下命令构建图表时 您的计算图表会有什么不同 代替tf add 更一般地说 有 或者其他张量超载的操作 如果至少有一个x or y is a tf Te
  • 这个 Python 字符串切片语句中的两个冒号的用途是什么?

    例如 str hello str 1 3 我在 Python 文档中哪里可以找到它 in 序列描述 http docs python org library stdtypes html index 510 s i j k slice of
  • 解析包含 json 字符串的 json

    我有一个 json 里面有另一个 json 但它在双引号内 因此它给了我一个解析错误 除了使用之外还有什么方法可以解析这个jsongsub替换双引号 obj Name FirstName Douglas LastName Crockford
  • 在包含缺失值的 Pandas 数据框列上使用 apply 和 lambda 函数

    这是这个问题的后续 如何根据 pandas 数据框中其他列中的子字符串创建新列 https stackoverflow com questions 70086559 how to create new column based on sub
  • 替换 Python 列表/字典中的值?

    好的 我正在尝试过滤传递给我的列表 字典并稍微 清理 它 因为其中有某些值我需要删除 所以 如果它看起来像这样 records key1 AAA key2 BBB key3 CCC key4 AAA 我如何快速轻松地运行所有内容并将 AAA
  • 如何在lxml,Python中将<转换为<?

    有一个xml文件
  • 虎鲸失踪

    使用plotly 导出静态图表时遇到小问题 Plotly 无法正确识别我已安装 orca 并且仍然存在与缺少 orca 相关的错误 我尝试更改 orca 目录 但它仍然无法正常工作 谁知道出了什么问题吗 My code import plo
  • 如何在google colaboratory上使用GPU升级tensorflow

    目前google colaboratory使用tensorflow 1 4 1 我想升级到1 5 0版本 每次当我执行时 pip install upgrade tensorflow命令 notebook实例成功将tensorflow版本升
  • python散景中的反转轴

    我正在尝试反转 y 轴并在散景散点图中设置 x 和 y 的范围 我在用 BokehPlot bokeh scatter data df x range min utc max utc y range min val max val 我收到错
  • 在 jupyter 笔记本中运行 pytest 测试函数

    我正在制作有关 python 测试选项的演示 我想要演示的技术之一是 pytest 我计划使用 jupyter ipython 笔记本进行演示 理想情况下 我希望能够在单元格中定义一个测试函数 然后使用 pytest 运行该函数 这样我就可

随机推荐

  • COMP 9417 T2_2021 Lesson 8

    贝叶斯 numeric attributes 决策树 优点 某种形式的树可能仍然是最流行的data mining 易于理解 易于实施 易于使用 可以分类可以回归 可用于大数据的处理 例子 例子 在N中需要多少个M来分类 N个特征 thres
  • MeshLab相关&纹理贴图

    安装MeshLab sudo apt get install meshlab 操作 旋转视图 鼠标左键 拖动 缩放视图 滑动鼠标滚轮 shift 左键 平移视图 鼠标滚轮按钮 拖动 指定旋转 轨迹球中心 鼠标左键双击模型特定点 改变界面左下
  • python爬虫什么意思-终于知道python爬虫是什么意思

    爬虫过程中也会经历一些绝望啊 比如被网站封IP 比如各种奇怪的验证码 userAgent访问限制 各种动态加载等等 下面是小编为您整理的关于python爬虫是什么意思 希望对你有所帮助 python爬虫是什么意思 python爬虫即网络爬虫
  • ndarray对象——创建

    首先需要创建数组才能对其进行运算和操作 可以通过arrray 函数传递Python的序列对象来创建数组 如果传递的是多层嵌套的序列 将创建多维数组 下例变量中的c import numpy as np a np array 1 2 3 4
  • 信用卡评分模型(R语言)

    信用卡评分 2016年1月10日 一 数据准备 1 问题的准备 目标 要完成一个评分卡 通过预测某人在未来两年内将会经历财务危机的可能性来提高信用评分的效果 帮助贷款人做出最好的决策 背景 银行在市场经济中起到至关重要的作用 他们决定谁在什
  • 1.业务架构·应用架构·数据架构实战 --- 架构实践全景图

    第1章 架构实践全景图 1 1 战略 BA DA AA TA五者的关系 业务架构是跨系统的业务架构蓝图 应用架构 数据架构 技术架构是解决方案的不同方面 BA Business Architecture 业务架构 DA Data Archi
  • 计算机网络-应用层协议3(SMTP、POP3、IMAP)

    1 SMTP 简单邮件传输协议 1 1 SMTP的基本操作 假设Alice想给Bob发送一封简单的ASCII报文 Alice调用她的邮件代理程序并提供Bob的邮件地址 bob someschool edu 撰写报文 然后指示用户代理发送该报
  • 【2022版】Golang面试题目全网超全超详细的口语化解答总结

    2022版 Golang面试题目全网超全总结 1 特性篇 1 1 Golang 使用什么数据类型 1 2 字符串的小问题 1 3 数组定义问题 1 4 内存四区 1 5 Go 支持什么形式的类型转换 1 6 空结构体的作用 1 7 单引号
  • 完全理解图(上)——图的概念、存储及遍历

    术语 图 由结点的有穷集合V和边的集合E组成 在图中 结点常被称为顶点 若两个顶点之间存在一条边 则表示两个顶点相邻 有向图 图的每条边都有方向 无向图 图的每条边没有方向 弧 有向图中 常将边称为弧 含箭头的一端称为弧头 另一端称为弧尾
  • spark机器学习训练模型示例(一)

    利用逻辑回归建立模型 建立训练集和测试集 from pyspark ml import Pipeline from pyspark ml classification import LogisticRegression from pyspa
  • 并发编程系列之线程池工厂类:Executors

    前言 上节讲了讲自定义线程池 今天我们来聊聊线程池框架 在实际开发中我们还是基本使用线程框架Executor给我们提供的一些工具类 Java提供的Executor都在JUC java util concurrent 包下面 主要包括 线程池
  • ChatGPT 与 Github Copilot 对于程序员的作用

    文章目录 1 ChatGPT 是什么 2 ChatGPT 的用处 ChatGPT 写代码 ChatGPT 定位问题 ChatGPT 厘清概念 ChatGPT 内容创作 3 Github Copilot 的用处 4 小结 参考文献 1 Cha
  • Qt Creater Bug: multiple define of ...

    在导入自己写的文件到Qt 工程时 发现报了好多个 multiple define of 的错误 网上查了以下 解决方法有提到 头文件重复包含 ifndef define endif 编译出来的 o文件链接失败 需要clean工程的生成文件
  • jvm原理(37)JVM内存空间划分与作用详解

    JVM内存区域分了如下几个区域 虚拟机栈 Stack Frame 在执行一个方法的时候 会有一个栈帧 用来存储 方法里边的操作数的出栈入栈 当java文件编译完成的时候 max stack 栈最大的深度 max local 最大局部变量表有
  • python定义函数prime判断是否是素数_用自定义函数判断素数 用C语言编写自定义函数prime(int x),判断x是否为素数?...

    用C语言编写自定义函数prime int x 判断x是否为素数 int prime int x int i k k int sqrt double x for i 2i lt ki if x i 0 break 如果完成所有循环 那么x为素
  • Python+uiautomator2+夜神模拟器,实现安卓自动化操作的一些尝试

    前言 说一下这个配置的来源 最开始是想抓取某个应用里面的一些文本信息 自己的手机没root不好抓包 所以下载了安卓模拟器 然后安装抓包APP 直接抓 发现内容传输是加密的 那么在不去研究加密方法 最简单的方式 就是直接从屏幕控件中提取文本了
  • 基于RK3568的Linux开发

    第一篇 RK3568 Linux系统移植 文章目录 目录 第一篇 RK3568 Linux系统移植 文章目录 前言 一 编译环境搭建 1 编译环境介绍 2 安装依赖 二 获取官方的RK356X Linux SDK包 1 解压RK356X L
  • python之txt文件基本操作

    文章目录 1 读取txt文本内容 1 1 read 1 2 readline 1 3 readlines 2 写入txt文本 2 1 读写模式 2 2 读取txt文件的若干行写入另一个txt 3 其他使用 3 1 删掉指定字符前 后的内容
  • java.lang.ClassNotFoundException: com.google.common.base.MoreObjects

    前几天搞一个SpringCloud 配置swagger 用swagger2 7 0无法成功启动项目 一直报java lang ClassNotFoundException com google common base MoreObjects
  • 高清!手把手教你Python爬取LOL英雄皮肤套图

    作者 锋小刀 微信搜索 Python与Excel之交 关注我的公众号查看更多内容 目标URL https lol qq com data info heros shtml 里面是LOL所有英雄的头像和名称 本次的爬取任务是该网页中所有英雄的