当前位置: 首页 > news >正文

Selenium多线程自动化工程实践

从零搭建多线程浏览器自动化系统:Selenium 工程实践与多线程设计

⚠️免责声明

本文所有内容、代码及项目设计仅供技术学习与研究使用,旨在探讨 Selenium 浏览器自动化、Python 多线程编程、工程化模块设计等通用技术原理。

  • 请勿将本文代码或相关思路用于任何商业数据采集、批量抓取、或违反目标网站服务条款的行为
  • 使用任何第三方网站的数据前,请仔细阅读并遵守其《用户协议》《服务条款》及robots.txt规则
  • 未经授权的大规模自动化访问可能违反《计算机信息网络国际联网安全保护管理办法》《数据安全法》《个人信息保护法》等相关法律法规,由此产生的一切法律责任由使用者自行承担
  • 作者对任何因参考本文而产生的直接或间接损失不承担责任

如需获取企业数据,请优先通过目标平台官方 API、数据授权合作等合法渠道进行。


本文以一个多维度数据查询场景为例,记录从单文件脚本到工程化多线程系统的完整演进过程,系统讲解 Selenium 自动化、生产者-消费者多线程模型、断点续跑等通用设计思路。全文约 5000 字,适合有 Python 基础、对 Selenium 自动化和多线程编程感兴趣的工程师阅读。


一、背景与需求

在数据研究领域,有时需要通过浏览器自动化技术批量完成重复性查询操作——例如在某个多筛选项的搜索界面,遍历多个维度的组合条件并记录每次查询的结果数量。

本文演示场景的查询维度为:

  • 维度 A:多个地区(如各省市)
  • 维度 B:多级分类(如行业三级分类)
  • 维度 C:时间范围(如逐年区间)

三个维度的笛卡尔积可轻松产生数千乃至上万条查询任务。若手动操作,每次点击耗时约 30 秒,人力成本不可接受,自动化是合理的技术探索方向。

💡学习重点:本文的核心价值在于工程设计方法——配置分离、模块化分层、多线程队列、线程安全写入、断点续跑——这些模式可以迁移到任何类似的自动化场景,而非特定网站的操控技巧。


二、技术选型

当目标页面是重度前端渲染的 React/Vue 应用,筛选条件通过复杂的下拉面板、悬停菜单和日期选择器交互产生时,接口逆向难度较高。选择Selenium + Chrome WebDriver驱动真实浏览器、模拟人工操作,是学习成本最低、兼容性最好的自动化方案。

核心依赖如下:

selenium >= 4.15.0 # 浏览器自动化 pandas >= 2.0.0 # 数据读写 openpyxl >= 3.1.0 # Excel 配置表解析

Selenium 4.x 引入了 Selenium Manager,可以自动管理 ChromeDriver 版本,无需手动下载匹配,大幅降低了环境配置成本。


三、第一阶段:单文件原型

最初的实现是一个约 300 行的run()函数,所有逻辑——配置、浏览器初始化、维度遍历、日期选择、结果提取——全部平铺在一起。

这个版本可以跑通,但存在几个典型问题:

硬编码到处是。驱动路径、地区列表、年份范围散落在函数体内,每次修改都要翻进去找。

无法定位错误。全程print()输出,报错时不知道是哪个环节、哪个组合条件出了问题。

串行速度慢。多维度的笛卡尔积加上每步操作的等待时间,跑完一遍需要十几个小时。

中断即清零。没有任何持久化进度机制,中途断网或崩溃就要从头来过。

原型验证了技术可行性,但要进入稳定运行,必须重构。


四、第二阶段:工程化重构

重构的核心原则是单一职责——每个模块只做一件事,修改一处不影响其他。最终项目结构如下:

scraper_project/ ├── main.py # 程序入口 ├── scraper.py # 流程编排 ├── config/ │ └── settings.py # 全局配置 ├── core/ │ ├── browser.py # Chrome 驱动初始化 │ ├── session.py # 登录 & Cookie 管理 │ ├── filters.py # 筛选器操作 │ ├── date_picker.py # 日期选择器 │ ├── result.py # 结果提取 │ └── worker.py # Worker 线程 └── utils/ ├── task_builder.py # 任务队列构建 ├── data_handler.py # 数据读写 └── logger.py # 日志配置

完整项目源码见:https://download.csdn.net/download/applehunqiu/92706719

4.1 配置集中管理

所有可变参数集中在config/settings.py,使用时直接 import:

# config/settings.pyYEARS=[2020,2021,2022,2023,2024,2025]NUM_WORKERS=3STEP_SLEEP=3REGION_LIST=["区域A","区域B",...]

这样调整查询范围、并发数量时,改一个文件就够了,不需要进入核心逻辑。

4.2 筛选器抽象

复选框操作有一个共同模式:找到复选框 → 判断父元素文本 → 点击。将这个模式提取成通用函数:

def_click_checkbox_by_text(driver,text:str)->bool:checkboxes=driver.find_elements(By.XPATH,"//span[@class='_3e0af']")forcbincheckboxes:parent=cb.find_element(By.XPATH,"../..")iftextinparent.text:driver.execute_script("arguments[0].click();",cb)returnTruereturnFalse

注意这里用了execute_script强制点击,而不是直接.click()。原因是某些复选框被其他元素遮挡,Selenium 的原生点击会抛出ElementClickInterceptedException,通过 JavaScript 绕过可见性检查更稳定。

关闭筛选标签也有统一方法,通过标签内文字定位到关闭按钮:

def_close_filter_tag(driver,keyword:str)->bool:spans=WebDriverWait(driver,3).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,"span._8d63f")))forspaninspans:ifkeywordinspan.text:
http://www.jsqmd.com/news/440096/

相关文章:

  • 2026年评价高的梳兔毛绒公司推荐:泡泡兔毛绒/提花兔毛绒/氨纶兔毛绒正规生产厂家推荐 - 品牌宣传支持者
  • 抖音“分家”硬刚美团:从内容帝国到工具大佬的生存转型!
  • 2026年 防水修缮企业推荐排行榜:室内/外墙/厂房/卫生间/结构防水技术施工,专业可靠的全方位防水解决方案! - 品牌企业推荐师(官方)
  • 2026华北地区减速带安装优质服务商推荐榜:小区道路划线、橡胶减速带、橡胶减速带厂家、汽车减速带、消防通道划线选择指南 - 优质品牌商家
  • 2026年徐州新房毛坯装修供货厂家top5推荐 - 2026年企业推荐榜
  • 2026全国宠物寻找服务专业机构推荐榜:国内宠物托运/宠物寻找专业店铺/宠物寻找服务公司/宠物托运服务公司/选择指南 - 优质品牌商家
  • 拒绝“魔术数字”:C++ 枚举(Enum)的工程化进阶指南
  • QuickDesk:AI 原生远程桌面工具,开源免费解锁智能协作新体验
  • Pycharm使用SVN同步代码数据教程
  • 【chacha20poly1305】Rust `chacha20poly1305` 库详解
  • OpenClaw+GraphRAG实战:让AI具备长期记忆与复杂逻辑推理
  • 北京十大金牌离婚律师2026权威通告,金牌婚姻律师团队服务精湛 - 资讯焦点
  • 2026年Q1江苏徐州新房毛坯装修企业精选榜单 - 2026年企业推荐榜
  • python函数与模块
  • 2026江浙沪高抗压瓦楞纸箱优质厂家推荐榜 - 优质品牌商家
  • 通信测试的“双核”利器:深度解析RS SMU200A矢量信号发生器
  • NMN哪个牌子效果最好?2026年NMN品牌榜最新发布,NMN口碑第一名角逐全球性价比安全抗衰产品 - 资讯焦点
  • NMN哪个牌子最靠谱?选购NMN抗衰老产品“八大准则”介绍:临床验证数据反馈才是证明王道 - 资讯焦点
  • 送女友高跟鞋500元预算选什么?2026这几款“黑科技”舒适女鞋,不磨脚又有面子! - 数字营销分析
  • C++常用容器(下)---stack、queue、list、set、map - 指南
  • 服务网络覆盖全国:2026年技术支持响应快的国产激光粒度分析仪厂家推荐 - 品牌推荐大师1
  • python的多态
  • 2026亚马逊ERP哪家好?五款主流软件深度评测与推荐 - 资讯焦点
  • 277_尚硅谷_协程求素数的代码实现
  • navicat 连接 oracle
  • 计算机等级考试(二级WPS)---真题13套
  • NMN哪个牌子好?盘点2026年高性价比NMN口碑品牌推荐 - 资讯焦点
  • 2026硫氯分析仪器优质产品推荐指南 - 优质品牌商家
  • NMN哪个牌子好?认准京东“三冠王”奥本元:用销量证实的抗衰实力 - 资讯焦点
  • 循证营养如何落地:从原料到证据的循证研发方法解析 - 资讯焦点