欢迎光临散文网 会员登陆 & 注册

Python练手:批量下载赛尔号精灵图片

2022-02-27 19:27 作者:摸鱼的橙汁  | 我要投稿



Python介绍以及安装方法

Python是一种编程语言,最大的特点就是易学、方便。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言。

关于Python编程环境的安装方法,请参考这篇文章:《如何安装python环境》

或者直接访问 https://www.python.org/downloads/ 自行下载安装即可,安装过程比较简单。

由于需要照顾到绝大多数网友,因此,本文讲解编程练手使用的开发工具为Python自带的IDLE (Python 3.x xx-bit),各位习惯使用其他开发工具的网友也可以使用自己喜欢的工具。

安装好Python后,点击开始菜单-Python-IDLE (Python 3.x xx-bit),就可以打开编程工具。

关于Python的基础语法,各位可以参考下这个网站。

https://www.runoob.com/python3/python3-tutorial.html


Python编程练手:批量下载赛尔号精灵图片与头像

这是我写的第一篇Python编程练手文章,因此就先选一个比较简单的程序来练手

相信有些玩家喜欢收集精灵图片与精灵头像,本文就讲解一下如何使用Python批量下载赛尔号精灵图片与头像

首先,我们需要知道两个网址。

赛尔号精灵图片网址 >>

http://seerh5.61.com/resource/assets/fightResource/pet/精灵序号.png

赛尔号精灵头像网址 >>

http://seerh5.61.com/resource/assets/pet/head/精灵序号.png

接着,下载文件需要一个函数库,在开始编程之前,先安装这个函数库。

按下Win+R键,输入“cmd”,打开“命令提示符”,输入“pip install requests”,按下回车键,等待命令执行完成。

最后,做好准备工作,开始编写代码。

打开Python-IDLE,点击菜单栏-File-New File,新建一个文件。

之后,我们将在这个窗口中,编写代码。

函数库是一个非常好用的东西,它将函数封装入库,把一些常用到的函数编完放到一个文件里,供不同的人进行调用。有了函数库,我们就可以直接使用别人写好的内容,去实现自己想要的功能,而不需要从头开始自己去写,大大地提高了开发效率。

举个类似的例子,我想给朋友打个电话,我只需要打开手机中的“电话”APP,然后拨号进行通话就可以了,而不需要我自己从头开始去造一个电话,然后再去拨号。

我们的目的是为了下载文件,下载文件就需要用到requests函数库,因此我们需要先将这个函数库导入进来。

输入以下代码,导入requests函数库

导入函数库后,我们尝试下载谱尼的精灵头像。

定义一个变量url用于存放谱尼(序号5000)精灵头像的网址

(谱尼精灵头像的网址为“http://seerh5.61.com/resource/assets/pet/head/5000.png”)。

定义一个变量r用来请求获得这个网址的数据信息

之后使用write函数,将这个数据保存成文件

(在保存之前,一定要先在D盘下创建一个名为“petHead”的文件夹)。

值得注意的是,文件路径一定要写“\\”(双反斜杠),或者是写“/”(单斜杠),因为“\”(单反斜杠)代表的是转义符。直接在文本前添加r也可以取消转义

以下三种写法都是行得通的。

将以上步骤的单句代码整合一下,就是下面这种效果。

(图中带有#的行不需要输入,这部分是注释,方便开发人员阅读代码思路,不会影响程序运行结果。)

然后,我们保存这个代码文件。

点击菜单栏-Run-Run Module,运行这个文件

这样,谱尼的头像图片就会下载到对应的文件夹内了。

好的,学会了如何下载单个文件,接下来就开始尝试批量下载多个文件。

批量下载,自然离不开循环结构,添加一个for循环,将下载文件的函数放进去

range(1,5001)指的是从1~5000的整数,range函数创建的集合,包含左侧,不包含右侧。

由于变量i是int类型(整数型),因此需要使用str()函数将其转换为string型(字符串/文本型)。

把代码整合一下,就是下图的样子。

运行这段代码,就可以批量下载精灵头像的图片了。

这样,最基本的批量下载精灵图片的功能就做好了。

当然,我们都想要精益求精,这段代码或许还有一些地方需要进行优化。

刚刚,需要我们手动创建文件夹,才能把文件下载到指定的文件夹内,或许,我们可以使用代码自动创建文件夹

首先,导入os库

如果目标文件夹不存在,那么就创建目标文件夹。

把这一段代码添加进去,整合后的代码就是这样的。

有时候,我们会发现,某些序号的精灵不存在,比如1001号,因此,我们需要判断一下精灵图片文件是否存在,如果存在,再下载。

定义一个变量status,用来获得这个网址数据的状态

判断这个网址是否正常,如果该网址不存在对应的文件,这个status就会返回404

如果这个文件不存在,那么就跳过这个文件,不下载,快进到下个文件的循环。

将这个判断加到适当的位置,就可以避免下载空文件。

最后,我们把精灵图片的网址也加进去,并添加下载进度输出的函数

整合结果如下图所示。

这样,就可以一边批量下载图片,一边输出下载结果

当然,各位也以调整一下代码结构,只使用一个循环完成任务,这样效率会更高一些

只不过需要继续嵌套if,而python对于空格缩进的要求非常严格,因此各位再嵌套的时候,一定要计算好空格的数量

最后,为了减轻服务器的压力,大家一定要为for循环加一个延时代码

不加延时的话,短时间高频访问某个网站,那么这个网站可能会把你的IP拉黑,你就暂时无法访问这个网站了。

导入time函数库

添加延时0.5秒的函数

把延时函数放到for循环之中

这样,使用Python批量下载赛尔号精灵图片与头像的小程序就制作完成了。

如果喜欢本文,欢迎点赞、评论、转发,听说关注我的人都变帅了。

留个练手的小作业,感兴趣的小伙伴可以尝试写一个批量下载刻印图片的小程序。

精灵刻印的网址 >> 

http://seerh5.61.com/resource/assets/countermark/icon/刻印序号.png

刻印序号从10001开始,10001~10396(能力刻印),然后是20001~20692(技能刻印),然后就是从40001开始了(全能刻印),最新的刻印序号在42100左右。


程序源代码


# 导入函数库

import requests

import os

import time


# 创建目录

if not os.path.exists('D:\\petHead'):

    os.mkdir('D:\\petHead')

if not os.path.exists('D:\\pet'):

    os.mkdir('D:\\pet')


for i in range(1,5001):

    # 延时

    time.sleep(0.5)

    # 定义网址

    url = 'http://seerh5.61.com/resource/assets/pet/head/' + str(i) + '.png'

    r = requests.get(url)

    # 判断文件状态

    status = r.status_code

    if status != 404:

        # 下载头像文件

        with open("D:\\petHead\\"+ str(i) + '.png', "wb") as file:

            file.write(r.content)

            # 输出下载结果

            print ('已下载头像图片:' + str(i))

    # 定义网址

    url = 'http://seerh5.61.com/resource/assets/fightResource/pet/' + str(i) + '.png'

    r = requests.get(url)

    # 判断文件状态

    status = r.status_code

    if status != 404:

        # 下载精灵文件

        with open("D:\\pet\\"+ str(i) + '.png', "wb") as file:

            file.write(r.content)

            # 输出下载结果

            print ('已下载精灵图片:' + str(i))



Python练手:批量下载赛尔号精灵图片的评论 (共 条)

分享到微博请遵守国家法律