【爬虫系列】Python如何实现进度条效果?

article/2025/10/28 18:33:14

一、需求

在爬取数据过程中,发现不看输出日志是不知道当前的爬取进度,而单纯靠控制台输出日志信息也不方便判断。因此,就想办法给爬取过程加个进度条,实时展示当前的爬取进度。

有了这个需求和想法之后,那如何实现呢?目前有两类实现显示进度条的方案,一种是使用 Python 内置模块,比如 time 模块;另一种是引入第三方专用模块,比如 tqdm 模块,alive-progress 模块等。

二、内置模块实现进度条效果

1、简单进度条

import sys, timedef test_simple():for i in range(1, 101):print("\r", end="")print(f"当前爬取进度:{i}%:", "▋" * (i // 2), end="")sys.stdout.flush()time.sleep(0.05)

测试效果:

 2、带时间进度条

import timedef test_with_time():scale = 50start = time.perf_counter()for i in range(scale + 1):progress = "▋" * ipoint = "." * (scale - i)c = (i / scale) * 100during = time.perf_counter() - startprint("\r{:^3.0f}%【{}->{}】{:.2f}s".format(c, progress, point, during), end="")time.sleep(0.1)

测试效果:

三、第三方模块实现进度条效果

1、tqdm模块

tqdm 是专门用于快速生成进度条的模块,使用前先下载该模块:

pip install tqdm
实现代码:
import time
from tqdm import tqdmdef test_tqdm():# tqdm构造器内放入可迭代的对象for i in tqdm(range(1, 101)):# do somethingstime.sleep(0.1)

测试效果:

2、alive-progress模块

官网描述:alive-progress 是一个实时展示进度,具有非常酷炫动画效果的进度条工具。

先下载该模块:

pip install alive-progress

实现代码:

from alive_progress import alive_bardef test_alive_progress(task_num, totals, sleep_time):for i in range(task_num):  # 定义任务数with alive_bar(totals, bar='blocks', title=f'Task {i + 1}') as bar:for i in range(totals):time.sleep(sleep_time)bar()test_alive_progress(5, 150, 0.02)

测试效果:

参考了官网的文档,说是运行过程中会有动画效果(实操过程中并未看到呢?)!!

3、其他模块(了解)

3.1 progress模块:Easy progress reporting for Python!

官网地址:progress · PyPI

3.2 PySimpleGUI模块:是一款基于GUI界面展示工具,功能强大,可用于进度条展示。

 

官网地址:

PySimpleGUI · PyPI

四、总结

其实,第三方模块实现显示进度条功能,底层也是基于内置模块的第二种方式。因此,这里不打算使用第三方库实现进度条,而是采用内置模块实现,选择第二种,并嵌入到代码中。

接下来,将我之前爬取天气数据的方法 operate_selenium() 改造一下,代码如下:

def common_selenium(url, citys, path):scale = len(citys)start = time.perf_counter()  # 起始计时点for i in range(len(citys) + 1):# 进度条相关计算progress = "▋" * ipoint = "." * (scale - i)c = (i / scale) * 100# 最后一次列表不存在元素,避免异常,不执行if i == scale:passelse:browser = webdriver.Chrome()  # 使用谷歌浏览器browser.maximize_window()  # 窗口最大化browser.get(url)  # get请求天气网地址time.sleep(2)# 搜索指定城市天气today_weathers = operate_selenium(browser, citys, pos=i, path=path)# print(f'city:{citys[i]},today_weathers:{today_weathers}')write_log(today_weathers, citys[i], path)# 休眠5s,再关闭浏览器time.sleep(5)browser.quit()# 进度条实时显示during = time.perf_counter() - startprint("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c, progress, point, during), end="")time.sleep(0.01)

循环爬取城市列表,当爬取到某一座城市的天气信息时,天气数据获取的进度如下:

25 %[▋->...]34.66s

50 %[▋▋->..]51.63s

100%[▋▋▋▋->]69.58s

这下看进度就清晰多了~


http://chatgpt.dhexx.cn/article/1EaqWfBt.shtml

相关文章

Python 实现进度条的六种方式

一、普通进度条 示例代码 import sys import timedef progress_bar():for i in range(1, 101):print("\r", end"")print("Download progress: {}%: ".format(i), "▋" * (i // 2), end"")sys.stdout.flush()time.sleep(0.…

svn -- 客户端+服务端的下载安装及配置

通用管理后台推荐 (兮家 plus) 【兮家 plus】, 主要应用于中小型项目的快速开发,已经历历时3年的优化改进,具备完善的基础功能以及代码生成,并且拥有完善的分布式解决方案:如分布式缓存,分布式锁,分布式唯…

SVN的下载安装及配置环境变量

文章目录 简介使用SVN特点特性工作原理 安装1、安装subversion服务器端2、创建SVN资源库目录3、生成SVN资源目录4、开启3690端口5、使用命令svnserve启动服务6、用户密码passwd配置1、文件都在svn的conf/目录下2、修改passwd3、权限控制authz配置 7、修改svnserve.conf配置选项…

SVN注册下载安装以及使用一气呵成

本博客根据SVNbucket官方视频学习制作的,这里记录本人操作的记录 视频链接: https://www.bilibili.com/video/BV1k4411m7mP?vd_sourcea4c65e14d1ff11ea858cadc164fbb59e 一 .SVN的介绍 1.SVN是什么 查阅资料可以知道 ,这是一个开放源代码的版本控制系统,管理着随时间改变的…

Windows下的subversion(SVN)下载安装及配置 -详细步骤

一、安装: 1.下载网址[http://subversion.apache.org/ 2.选择Windows系统下的VisualSVN二进制安装文件 3.选择VisualSVN Server下,相应的版本 4.下载完成后,直接点击安装 5,一直下一步,到 下一步,知…

SVN的下载与安装

看到这篇博客的应该就知道SVN是什么——版本控制系统。具体高深的暂时还知道的不多,我也是才接触,在这里分享一下,也算帮自己记录一下。 SVN大概分两部分,一部分下个安装包,装在电脑上;另一部分&#xff0…

svn和TortoiseSVN下载安装步骤【非常详细】

1 安装Apache Subversion 由于Apache Subversion 项目不正式认可或维护 Subversion 软件的任何二进制包。 我们可以通过官网推荐的其他平台下载二进制包 地址 https://subversion.apache.org/packages.html 点击 VisualSVN 支持和维护(选这个是因为不需要注册&…

svn下载和安装

一、svn简介 SVN全称Subversion,是一款优秀的版本控制工具。 SVN分为服务器、客户端两部分,一般以VisualSVN作为服务器,以TortoiseSVN作为客户端。 SVN 核心概念: repository(源代码库):源代码统一存放…

项目管理工具-SVN(SubVersion)下载安装/基本详细具体使用步骤

目录 前言 SVN简介: 1.什么是SVN? 2.下载服务端 Apache Subversion Binary Packages 进入网址后,滚动到浏览器最底部看到如下截图 下载TortoiseSvn--​编辑 3.下载地址客户端 https://tortoisesvn.net/downloads.html 4.检验客…

SVN下载安装及入门使用教程,详细到不能再详细了

为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本。 SVN是什么? 它是一个自由/开源的版本控制系统…

2.SVN下载及其安装配置

目录 1. SVN简介 2. SVN下载及其安装配置 3. SVN服务器与客户端基本使用 4. Eclipse中使用SVN 5. SVN冲突解决 6. IDEA中使用SVN SVN下载及其安装配置 目录安装SVN前需知下载SVN服务器1.进入官网2.点击version history历史版本3.选择4.2.0版本 --> 选择64位点击下载4.进…

SVN客户端(Windows)——Tortoise SVN(中文版 )的下载及安装

SVN客户端(Windows)——Tortoise SVN(中文版 )的下载及安装 主要介绍 Tortoise SVN 的下载、安装及如何设置为中文 Tortoise SVN 及中文安装包下载 官网下载:Tortoise SVN 123云盘下载:Tortoise SVN 及…

SVN下载与安装

1、下载地址 Downloads TortoiseSVN 这里提供一个官网的1.14.3版本。 安装包 链接:https://pan.baidu.com/s/1ZAGv5FeVLM6n3GRb4WAtvw?pwd9izl 提取码:9izl 中文语言包 链接:https://pan.baidu.com/s/1A1wILNaQu5sYAffSLl1usg?pwdll…

SVN 下载与安装(超简单)!!!

一 SVN 是什么? 在公司做过团队开发都知道,一个项目的代码要保持最新的版本。 举个例子! 例如:一个公司的项目有5人开发(A,B,C,D,E五个人),有一…

SVN学习:SVN的下载安装

一、SVN的安装 1、下载SVN安装包 首先在本地电脑上安装SVN服务器与客户端,安装包可以去官网下载或者从我的百度网盘中直接提取。两个 获取方法的链接地址如下所示: 1、官网地址:SVN服务器下载地址:https://www.visualsvn.com/ser…

Hibernate - Java 类型, Hibernate 映射类型及 SQL 类型之间的对应关系

【1】常见的映射关系表 常见的映射对应关系如下表所示: Hibernate映射类型Java类型标准SQL类型字节大小integer/intjava.lang.Integer/intINTEGER4Bytelongjava.lang.Long/longBIGINT8Byteshortjava.lang.Short/shortSMALLINT2Bytebytejava.lang.Byte/byteTINYINT…

MySQL字段类型到JAVA类型的对应及转换

1. 概述 在使用Java JDBC时,你是否有过这样的疑问:MySQL里的数据类型到底该选择哪种Java类型与之对应?本篇将为你揭开这个答案。 2. 类型映射 java.sql.Types定义了常用数据库(MySQL、Oracle、DB2等)所用到的数据类型,官名也叫JDB…

Java类型擦除

什么是类型擦除 Java的泛型是伪泛型,这是因为Java在编译期间,所有的泛型信息都会被擦掉,正确理解泛型概念的首要前提是理解类型擦除。Java的泛型基本上都是在编译器这个层次上实现的,在生成的字节码中是不包含泛型中的类型信息的…

如何直接用Tomcat启动项目

我这里用的是自动安装版本的Tomcat 解压版的方法差不多,就是启动时到bin文件夹下双击startup文件 首先先得有一个war包(war后缀文件) 这里用eclipse工具做示范 1.确保你的web项目在eclipse里面能启动 2.导出war包 Finish之后就导出了war包。…

Mac启动tomcat的介绍

下载安装到官网上找一下资源就好,windows电脑可以直接双击startup来运行,而本篇博客介绍mac端如何启动tomcat 找到tomcat安装路径 打开访达,下载,找到名为apache-tomcat-版本号的文件 打开终端 进入tomcat文件夹下的bin路径 在…