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

告别Selenium!用DrissionPage的ChromiumPage和SessionPage,5分钟搞定登录与爬虫

告别Selenium用DrissionPage的ChromiumPage和SessionPage5分钟搞定登录与爬虫在Python自动化测试和爬虫开发领域Selenium曾经是无可争议的王者。但随着时间的推移开发者们逐渐意识到Selenium的局限性——复杂的配置、缓慢的执行速度以及需要额外安装浏览器驱动。这些痛点催生了一批新兴的替代方案其中DrissionPage以其简洁高效的特性脱颖而出。DrissionPage是一个纯Python编写的自动化工具库它巧妙地整合了浏览器自动化和网络请求两大功能。通过ChromiumPage和SessionPage两个核心类开发者可以轻松应对各种场景从需要渲染JavaScript的复杂网页操作到高性能的纯数据抓取。本文将带你快速上手DrissionPage通过实际案例展示它如何用更简洁的代码完成传统Selenium的任务。1. 为什么选择DrissionPage而非Selenium在深入代码之前让我们先看看DrissionPage相比Selenium的几大优势零配置启动不需要下载额外的浏览器驱动安装即用更简洁的API方法命名直观链式调用让代码更易读混合模式支持可在浏览器控制和纯请求模式间无缝切换内置智能等待自动处理元素加载等待减少冗余代码性能优势比Selenium执行相同任务快30%-50%# Selenium与DrissionPage初始化对比 from selenium import webdriver from DrissionPage import ChromiumPage # Selenium需要配置驱动路径 driver webdriver.Chrome(executable_path/path/to/chromedriver) # DrissionPage直接使用系统已安装的浏览器 page ChromiumPage()从上面的简单对比就能看出DrissionPage省去了繁琐的驱动配置环节。对于经常需要在不同环境部署脚本的开发者来说这大大降低了维护成本。2. 快速实现网站登录以Gitee为例自动化登录是许多爬虫和测试脚本的第一步。让我们看看如何使用DrissionPage的ChromiumPage完成Gitee登录流程。2.1 登录流程实现from DrissionPage import ChromiumPage # 创建页面对象会自动打开浏览器 page ChromiumPage() page.get(https://gitee.com/login) # 输入用户名和密码 page.ele(#user_login).input(your_username) page.ele(#user_password).input(your_password) # 点击登录按钮 page.ele(value登 录).click()这段代码有几个值得注意的特点智能元素定位ele()方法支持CSS选择器、XPath、属性定位等多种方式自动等待所有元素操作都内置等待机制默认10秒超时链式调用可以直接在元素定位后接操作命令代码更紧凑2.2 登录状态保持登录成功后DrissionPage会自动管理cookies。你可以将会话保存下来供后续使用# 保存当前会话 page.save_cookies(gitee_cookies.json) # 下次使用时加载cookies page ChromiumPage() page.get(https://gitee.com) page.load_cookies(gitee_cookies.json) page.get(https://gitee.com/dashboard) # 直接进入登录后页面3. 高效数据爬取SessionPage实战对于不需要浏览器渲染的简单页面使用SessionPage基于requests可以获得更高的性能。下面我们以爬取Gitee开源项目为例。3.1 单页数据抓取from DrissionPage import SessionPage page SessionPage() page.get(https://gitee.com/explore/all) # 获取所有项目标题和链接 projects page.eles(.title project-namespace-path) for proj in projects: print(f项目: {proj.text}, 链接: {proj.link})3.2 分页爬取完整实现from DrissionPage import SessionPage import time page SessionPage() for i in range(1, 6): # 爬取前5页 page.get(fhttps://gitee.com/explore/all?page{i}) # 使用CSS选择器定位元素 items page.eles(.project-info) for item in items: title item.ele(a).text desc item.ele(.project-desc).text stars item.ele(.stars-count).text print(f{title}: {desc} | 星标: {stars}) time.sleep(1) # 礼貌性延迟提示对于反爬严格的网站可以结合ChromiumPage和SessionPage使用。先用浏览器获取渲染后的页面然后提取关键数据用SessionPage批量请求。4. 元素定位与操作大全DrissionPage提供了丰富的元素定位和操作方法比Selenium更加灵活。以下是常用方式的总结4.1 元素定位方式对比定位方式示例代码适用场景CSS选择器page.ele(#id)简单的ID/class定位XPathpage.ele(xpath://div[classname])复杂层级结构属性定位page.ele(nameusername)通过任意属性定位文本定位page.ele(text:登录)通过可见文本定位组合定位page.ele(tag:divclassheader)标签属性组合4.2 常用元素操作element page.ele(#some-element) # 基本操作 element.click() # 点击 element.input(text) # 输入文本 element.clear() # 清空内容 # 高级操作 element.drag_to(other_element) # 拖拽 element.hover() # 鼠标悬停 element.screenshot(elem.png) # 元素截图 # JavaScript执行 element.run_script(arguments[0].style.border2px solid red)5. 从Selenium迁移到DrissionPage的实用技巧如果你已经有Selenium项目以下转换指南可以帮助你平滑迁移5.1 常见模式转换对照表Selenium代码DrissionPage等效代码find_element(By.ID, id)ele(#id)find_elements(By.CLASS, class)eles(.class)WebDriverWait(driver, 10)内置自动等待无需额外代码ActionChains(driver).move_to_element(elem)elem.hover()driver.execute_script()page.run_js()或element.run_script()5.2 性能优化建议合理选择页面模式需要JS渲染用ChromiumPage纯数据抓取用SessionPage复用浏览器实例# 创建时指定不自动关闭 page ChromiumPage(quit_driverFalse) # 多次操作... # 最后手动关闭 page.quit()并行处理技巧from concurrent.futures import ThreadPoolExecutor def crawl_page(url): page SessionPage() page.get(url) return page.ele(tag:title).text urls [https://example.com/page1, https://example.com/page2] with ThreadPoolExecutor(max_workers4) as executor: results list(executor.map(crawl_page, urls))在实际项目中DrissionPage的简洁API确实大幅减少了样板代码。一个常见的登录数据抓取流程用Selenium可能需要100行代码而用DrissionPage通常50行内就能完成且执行速度更快。

相关文章:

告别Selenium!用DrissionPage的ChromiumPage和SessionPage,5分钟搞定登录与爬虫

告别Selenium!用DrissionPage的ChromiumPage和SessionPage,5分钟搞定登录与爬虫 在Python自动化测试和爬虫开发领域,Selenium曾经是无可争议的王者。但随着时间的推移,开发者们逐渐意识到Selenium的局限性——复杂的配置、缓慢的执…...

别再只跑仿真了!用Vivado 2023.1给你的FPGA图像处理项目做个“硬件体检”

从仿真到硬件的跨越:FPGA图像处理项目实战验证指南 在实验室里看着仿真波形完美无缺,却在开发板上遭遇各种"灵异事件"——这可能是每个FPGA开发者都经历过的成长仪式。仿真环境就像飞行模拟器,能教会你基本操作,但真正的…...

软件测试中的bug管理:高效定位、跟踪与修复全流程解析

在软件测试全生命周期中,bug管理是保障产品质量、提升开发效率的核心环节。从bug的精准定位到全流程跟踪,再到最终的有效修复,每一个步骤都需要专业的方法、工具与团队协作。对于软件测试从业者而言,掌握科学的bug管理体系&#x…...

我用豆包写的论文 AI 率为什么 95%?这款工具一次降到 4% 万方检测合格

我用豆包写的论文 AI 率为什么 95%?这款工具一次降到 4% 万方检测合格 去年我用豆包写了 1 万字的生物学本科论文——自己读着挺顺、像人写的。送学校万方 AIGC 检测——AI 率 95.7%,学校卡的是 30%。我整个人懵了。 这篇文章我把当时的实测过程写下来—…...

理解“变异”的奥秘——集中趋势与变异性度量详解

如果说统计学是在“用数据讲故事”,那么集中趋势回答的是:“这个故事大概讲到了哪里?”而变异性回答的是:“这个故事有多分散、多不稳定、多不一样?”很多初学者学统计时,最先记住的是“平均数”“中位数”…...

基于Adafruit CRICKIT与3D打印的水面机器人DIY全攻略

1. 项目概述:打造你的第一艘智能水面机器人 如果你对机器人、水上航行或者水下摄影感兴趣,但又觉得从零开始设计电路和结构太复杂,那么这个项目就是为你准备的。今天,我想分享一个我最近完成的、非常有趣且实用的创客项目&#x…...

MPC-BE:为什么这款开源播放器能成为Windows多媒体播放的终极解决方案?

MPC-BE:为什么这款开源播放器能成为Windows多媒体播放的终极解决方案? 【免费下载链接】MPC-BE MPC-BE – универсальный проигрыватель аудио и видеофайлов для операционной систем…...

PlotSquared完整指南:5分钟掌握Minecraft领地管理神器 [特殊字符]

PlotSquared完整指南:5分钟掌握Minecraft领地管理神器 🎮 【免费下载链接】PlotSquared PlotSquared - Reinventing the plotworld 项目地址: https://gitcode.com/gh_mirrors/pl/PlotSquared PlotSquared是一个革命性的Minecraft领地管理插件&am…...

从硬件电路深入理解计算机中断机制:8088到现代中断控制器

1. 项目概述:从硬件视角重新认识中断在计算机的世界里,中断(Interrupt)是一个既基础又至关重要的概念。它就像是程序世界里的“紧急呼叫”系统,允许CPU这个“大管家”在埋头处理日常事务(执行主程序&#x…...

Perplexity Pro高阶用法深度解密:结合Obsidian/Notion实现知识自动蒸馏的完整链路(含可复用JSON Schema)

更多请点击: https://intelliparadigm.com 第一章:Perplexity Pro高阶用法深度解密:结合Obsidian/Notion实现知识自动蒸馏的完整链路(含可复用JSON Schema) Perplexity Pro 的 API 提供了结构化响应能力,配…...

数字孪生是什么?它在数字化转型中的关键角色是什么?

数字孪生的定义与应用现状 数字孪生技术利用实时映射物理实体到虚拟空间,为各类行业提供了无缝的连接与监控。例如,在制造行业,数字孪生可以模拟生产线,帮助企业快速识别瓶颈,提高效率。在城市管理方面,城市…...

OpenClaw 2.7.5 Windows 一键部署教程|零配置开箱即用

前言 本地 AI 智能体技术持续迭代,私有化部署、数据安全可控、低门槛快速落地,已成为用户选型的核心考量。开源轻量化 AI 智能体 OpenClaw 2.7.5 版本完成全面优化升级,在环境适配性、服务稳定性与模型集成能力上均有显著提升,原…...

Artisan烘焙软件:基于Python的开源咖啡烘焙控制与数据分析平台

Artisan烘焙软件:基于Python的开源咖啡烘焙控制与数据分析平台 【免费下载链接】artisan artisan: the worlds most trusted roasting software 项目地址: https://gitcode.com/gh_mirrors/ar/artisan Artisan是一款采用Python技术栈构建的开源咖啡烘焙控制软…...

QuickLookVideo:让Mac上的视频文件管理变得轻松直观

QuickLookVideo:让Mac上的视频文件管理变得轻松直观 【免费下载链接】QuickLookVideo This package allows macOS Finder to display thumbnails, static QuickLook previews, cover art and metadata for most types of video files. 项目地址: https://gitcode.…...

OBS高级遮罩插件:15种专业遮罩技术的完整技术解析与实战应用

OBS高级遮罩插件:15种专业遮罩技术的完整技术解析与实战应用 【免费下载链接】obs-advanced-masks Advanced Masking Plugin for OBS 项目地址: https://gitcode.com/gh_mirrors/ob/obs-advanced-masks 在视频制作与直播领域,遮罩技术是区分业余与…...

5分钟解锁虚拟多屏生产力:Rust驱动打造Windows虚拟显示器终极方案

5分钟解锁虚拟多屏生产力:Rust驱动打造Windows虚拟显示器终极方案 【免费下载链接】virtual-display-rs A Windows virtual display driver to add multiple virtual monitors to your PC! For Win10. Works with VR, obs, streaming software, etc 项目地址: htt…...

盘点6款优质客户销售管理系统:全业务打通到垂直场景适配

前言在数字化转型的深水区,企业对于管理工具的需求已从单一的工具辅助转向全链路的业务协同。面对市场上纷繁复杂的SaaS产品,如何基于“客户信息管理、销售机会管理、表单流程、数据统计、移动端端支持、自动化、权限安全、系统集成”八大核心维度进行精…...

别再只盯着动态功耗了!聊聊CMOS电路中那个‘静悄悄’的静态功耗(以反相器为例)

别再只盯着动态功耗了!聊聊CMOS电路中那个‘静悄悄’的静态功耗(以反相器为例) 在低功耗芯片设计领域,工程师们常常将注意力集中在动态功耗的优化上——时钟网络的精简、门控时钟的引入、电压域的划分,这些技术确实能显…...

告别‘涂抹感’:深入浅出聊聊Chromatix ISP里ABF模块的‘边缘保留’与‘噪声消除’如何平衡

告别‘涂抹感’:深入浅出聊聊Chromatix ISP里ABF模块的‘边缘保留’与‘噪声消除’如何平衡 在手机摄影普及的今天,我们常常会遇到这样的困扰:夜间拍摄的照片要么噪点明显,要么经过降噪处理后变得模糊不清,丢失了细节…...

Flowable 6.7.2 适配达梦数据库踩坑实录:从驱动到Liquibase源码修改全攻略

Flowable 6.7.2 深度适配达梦数据库实战指南:从驱动配置到源码级改造 在国产化替代浪潮中,数据库迁移往往是技术团队面临的首要挑战。当工作流引擎Flowable遇上国产数据库达梦(DM),两者的"语言不通"会导致一系列兼容性问题。本文将…...

从QRegExp迁移到QRegularExpression避坑全记录:我们项目踩过的雷和最佳实践

从QRegExp迁移到QRegularExpression避坑全记录:我们项目踩过的雷和最佳实践 当团队决定将代码库从Qt4/Qt5升级到Qt6时,正则表达式模块的迁移往往是最容易被低估的挑战之一。我们项目组在重构过程中,曾因QRegExp到QRegularExpression的语法差异…...

用STM32G431RBT6复刻一个简易示波器+信号发生器:蓝桥杯嵌入式外设综合应用实战

基于STM32G431RBT6的嵌入式示波器与信号发生器开发实战 在嵌入式系统开发领域,将理论知识转化为实际应用能力是每个工程师成长的必经之路。本文将带你使用STM32G431RBT6开发板,从零开始构建一个兼具示波器和信号发生器功能的综合系统。这个项目不仅能够…...

CircuitJS1:如何在浏览器中免费创建电子电路仿真

CircuitJS1:如何在浏览器中免费创建电子电路仿真 【免费下载链接】circuitjs1 Electronic Circuit Simulator in the Browser 项目地址: https://gitcode.com/gh_mirrors/ci/circuitjs1 CircuitJS1是一款强大的开源电子电路仿真工具,让你直接在浏…...

考研数学避坑指南:那些课本不讲但真题爱考的极限与无穷小细节

考研数学避坑指南:那些课本不讲但真题爱考的极限与无穷小细节 考研数学中,极限与无穷小的概念看似基础,却暗藏玄机。每年都有大量考生在看似简单的题目上失分,原因往往是对这些概念的深层理解不足。本文将聚焦真题中最常见的陷阱&…...

能力本位招聘:打破学历地域限制,聚焦实战技能与远程协作

1. 项目概述:一次非典型的团队组建实验最近,我身边不少朋友和读者都在讨论一个挺有意思的招聘启事,标题就是“朱老师研发团队招人了!学历学校不限,地域不限!”。这和我们平时在招聘网站上看到的那些要求“9…...

Adobe-GenP 3.0:5分钟解锁Adobe全家桶的专业方案

Adobe-GenP 3.0:5分钟解锁Adobe全家桶的专业方案 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 还在为高昂的Adobe订阅费用发愁吗?Adobe-Ge…...

在自动化测试场景中利用Taotoken实现多模型API调用与成本控制

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在自动化测试场景中利用Taotoken实现多模型API调用与成本控制 对于工程团队而言,自动化测试是保障软件质量的关键环节。…...

手把手教你用Spark MLlib搞定协同过滤:从ItemCF到UserCF的保姆级代码解析

Spark MLlib实战:从协同过滤到深度学习推荐系统的全链路实现 推荐系统作为机器学习领域最具商业价值的应用之一,其核心算法在Spark生态中有着丰富的实现。本文将带您深入Spark MLlib的推荐算法实践,从经典的协同过滤到前沿的深度学习模型&…...

告别手写UI!用VSCode+QtDesigner+PyQt5,5分钟搞定你的第一个Python图形界面

5分钟极速构建Python GUI:VSCodeQtDesignerPyQt5全流程实战 每次看到同事用代码逐行构建UI界面时,总忍不住想起自己初学时的痛苦经历——调整一个按钮位置要反复运行程序,修改边距像素值就像在玩"猜数字"游戏。直到发现QtDesigner这…...

ASML财报解读:高毛利与利润倍增背后的光刻机技术垄断与市场逻辑

1. 财报核心数据深度解读:高毛利与利润倍增的背后 看到ASML最新发布的Q2财报,最抓人眼球的两个数字无疑是“毛利率超50%”和“每股净利润增长近一倍”。这不仅仅是两个亮眼的财务指标,更是理解这家全球光刻机巨头当前市场地位、技术壁垒和未来…...