自动化项目实战:用requests库自动保存王者荣耀英雄皮肤到本地,文末附源码下载!

2023-09-13 10:56:02

前言

王者荣耀是一款备受欢迎的手机游戏,拥有众多精美的英雄皮肤。如果你想获取这些皮肤的图片或者其他相关信息,可以利用Python编写一个简单的爬虫来实现。
在这里插入图片描述

安装第三方库

首先,我们需要安装Python的requests和BeautifulSoup库。可以使用以下命令来安装它们:

pip install requests
pip install beautifulsoup4
pip install lxml

源码

接下来,我们将使用requests库来发送HTTP请求,并使用BeautifulSoup库来解析HTML页面。具体代码如下:

# 发送请求的模块
# pip install requests
# pip install lxml
import requests
from lxml import etree
import os
from time import sleep
import random

# 伪装请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.125 Safari/537.36'
}

# 获取英雄列表的URL
hero_list_url = 'https://pvp.qq.com/web201605/js/herolist.json'
# 发送HTTP请求获取英雄列表数据
hero_list_json = requests.get(hero_list_url, headers=headers).json()

# 遍历英雄列表数据
for h in hero_list_json:
    # 获取英雄的ID和中文名
    ename = h.get('ename')
    cname = h.get('cname')
    # 如果英雄目录不存在,则创建
    if not os.path.exists(cname):
        os.makedirs(cname)

    # 访问英雄主页
    hero_detail_url = f'https://pvp.qq.com/web201605/herodetail/{ename}.shtml'
    hero_detail_resp = requests.get(hero_detail_url, headers=headers)
    hero_detail_resp.encoding = 'gbk'
    e = etree.HTML(hero_detail_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):
        # 构建皮肤图片的URL
        resp = requests.get(f'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{ename}/{ename}-bigskin-{i + 1}.jpg',headers=headers)

        # 保存皮肤图片
        with open(f'{cname}/{n}.jpg', 'wb') as f:
            f.write(resp.content)

        # 打印已下载的皮肤信息
        print(f'{n} 皮肤已下载成功!')

        # 随机休息一下
        sleep(random.randint(1,5))

在上面的代码中,我们先从 https://pvp.qq.com/web201605/js/herolist.json 获取英雄信息,它会返回一个json数据。然后,我们遍历json数据,获取英雄id和中文名。接下来,我们创建一个文件夹,以英雄名命名。

然后,我们使用lxml库来解析HTML页面。我们使用xpath方法来查找所有具有特定class属性的<ul>标签,这些标签包含皮肤的信息。

最后,我们根据英雄皮肤的名称,构造url,获取皮肤图片的下载地址,使用requests请求地址并保存图片到对应的文件夹下。

运行以上代码,你将会得到所有皮肤图片信息。

这只是一个简单的示例,你可以根据需要修改代码来获取其他英雄的皮肤信息。你还可以将这些英雄的技能、介绍等信息下载到本地,或者将它们存储到数据库中以供后续使用。

源码地址

链接:https://pan.baidu.com/s/1SFp6IBTrsIW8AJtjrpYlNg?pwd=daxt

更多推荐

卷积神经网络中的 Full、Same 和 Valid 卷积

文章目录卷积神经网络概述Full卷积Same卷积Valid卷积卷积模式的选择代码示例结论🎉欢迎来到AIGC人工智能专栏~卷积神经网络中的Full、Same和Valid卷积☆*o(≧▽≦)o*☆嗨~我是IT·陈寒🍹✨博客主页:IT·陈寒的博客🎈该系列文章专栏:AIGC人工智能📜其他专栏:Java学习路线Java面

自己实现 SpringMVC 底层机制 系列之-实现任务阶段 4- 完成自定义@Service 注解功能

😀前言自己实现SpringMVC底层机制系列之-实现任务阶段4-完成自定义@Service注解功能🏠个人主页:尘觉主页🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉😉在csdn获奖荣誉:🏆csdn城市之星2名⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣💓

多目标优化算法:基于非支配排序的小龙虾优化算法(NSCOA)MATLAB

一、小龙虾优化算法COA小龙虾优化算法(Crayfshoptimizationalgorithm,COA)由JiaHeming等人于2023年提出,该算法模拟小龙虾的避暑、竞争和觅食行为,具有搜索速度快,搜索能力强,能够有效平衡全局搜索和局部搜索的能力。小龙虾是一种形状类似于虾的甲壳类动物,其甲壳坚硬且颜色丰富。成体的

深度解析NLP文本摘要技术:定义、应用与PyTorch实战

目录1.概述1.1什么是文本摘要?1.2为什么需要文本摘要?2.发展历程2.1早期技术2.2统计方法的崛起2.3深度学习的应用2.4文本摘要的演变趋势3.主要任务3.1单文档摘要3.2多文档摘要3.3信息性摘要vs.背景摘要3.4实时摘要4.主要类型4.1抽取式摘要4.2生成式摘要4.3指示性摘要4.4信息性摘要5.抽

Shell脚本中文英文多语言国际化和命令行批处理(bash sh cmd bat)中定义函数的简单写法

文章目录命令行脚本参考-bat命令行脚本参考-bash值得学习的知识点1.识别终端使用的语言2.函数的编写3.获取用户的输入4.bat文件老是乱码怎么办有时候为了方便别人使用,我们会选择去编写各种各样的命令行脚本:给Windows用户编写.batcmd批处理脚本,给macOS、Linux用户编写.shbashshell

鼠标、键盘、窗口监听事件

一、画笔paint//画笔publicclassTestPaint{publicstaticvoidmain(String[]args){newMyPaint().loadFrame();​}}​classMyPaintextendsFrame{​publicvoidloadFrame(){setBounds(200,

flex:1详解,以及flex:1和flex:auto的区别

什么是flex:1?在css中,我们经常可以看到这样的写法:.box{display:flex;}.item{flex:1;}这里的flex:1相当于flex:110%,它是一个简写属性,表示项目(flexitem)在弹性容器(flexcontainer)中如何伸缩。它相当于flex:110%,包含了三个子属性:fle

JDK动态代理

Java中的两种常用动态代理方式JDK动态代理和Cglib动态代理是Java中常用的实现动态代理的方式。它们都可以在运行时生成代理类,实现对目标对象的代理操作。JDK动态代理适用于接口代理,Cglib动态代理适用于类代理。Cglib动态代理Cglib动态代理是基于继承的动态代理方式。它通过生成目标类的子类来实现代理,子

3.SpringEL方法调用实例

SpringEL方法调用实例文章目录SpringEL方法调用实例介绍SpringEL在注解的形式SpringEL调用List,Map中的方法**从List中过滤元素****从Map中获取值**SpringEL在XML的形式介绍Spring表达式语言(使用SpEL)允许开发人员使用表达式来执行方法和将返回值以注入的方式到

线路板的性能和技术要求有哪些

PCB加工厂家电路板的性能和技术要求与线路板的结构类型、选用的基材有关。不同类型(刚性和挠性)、不同结构(单面、双面、多层、有或无盲孔、埋孔等)、不同基材的PCB板,性能指标是不同的。它的性能等级,与产品设计一样按使用范围通常分为三个等级,PCB厂家描述产品在复杂性、功能性要求的程度和试验、检验的频度的不同。不同性能等

java 单元测试Junit

所谓单元测试,就是针对最小的功能单元,编写测试代码对其进行正确性测试。为了测试更加方便,有一些第三方的公司或者组织提供了很好用的测试框架,给开发者使用。这里介绍一种Junit测试框架。Junit是第三方公司开源出来的,用于对代码进行单元测试的工具(IDEA已经集成了junit框架)。相比于在main方法中测试有如下几个

热文推荐