前言
使用Selenium 创建多个浏览器,这在自动化操作中非常常见。
而在Python中,使用 Selenium + threading 或 Selenium + ThreadPoolExecutor 都是很好的实现方法。
应用场景:
- 创建多个浏览器用于测试或者数据采集;
- 使用Selenium 控制本地安装的 chrome浏览器 去做一些操作
- …
文章提供了 Selenium + threading 和 Selenium + ThreadPoolExecutor 结合的代码模板,拿来即用。
知识点📖📖
上面两个都是 Python 内置模块,无需手动安装~
导入模块
import threading
from concurrent.futures import ThreadPoolExecutor, as_completed
多线程还是线程池?
在Selenium中,使用 多线程 或者是 线程池,差别并不大。主要都是网络I/O的操作。
在使用 ThreadPoolExecutor 的情况下,任务将被分配到不同的线程中执行,从而提高并发处理能力。与使用 threading 模块相比,使用 ThreadPoolExecutor 有以下优势:
- 更高的并发处理能力:线程池 可以动态地调整线程数量,以适应任务的数量和处理要求,从而提高并发处理能力。
- 更好的性能:线程池 可以根据任务的类型和大小动态地调整线程数量,从而提高性能和效率。
- …
总之,使用 线程池 可以提高并发处理能力,更易于管理,并且可以提供更好的性能和效率。
但是选择多线程,效果也不差。
所以使用哪个都不必纠结,哪个代码量更少就选哪个自然是最好的。
多个浏览器✨
Selenium自动化中需要多个浏览器,属于是非常常见的操作了。
不管是用于自动化测试、还是爬虫数据采集,这都是个可行的方法。
这里示例的代码中,线程池的运行时候只有 多线程 的一半!!!
多线程与 多 浏览器🧨
这份代码的应用场景会广一些,后续复用修改一下 browser_thread 函