如何用DrissionPage进行网页自动化

DrissionPage基于 Python 的网页自动化工具,名称来源于Driver(驱动)与Session(会话)的结合。

DrissionPage旨在将浏览器自动化的便利性与数据包收发的高效率融为一体。

这里尝试梳理和了解DrissionPage,并在harness的辅助下运行一个完整的网页自动化示例。

1 核心特性

DrissionPage 拥有多项旨在提升自动化效率与稳定性的特性:

1)双模式驱动

既能像Selenium控制浏览器,也能像Requests一样直接收发数据包,

并且可以在两种模式间无缝切换。

2)强大的自研内核

不依赖 WebDriver,因此无需为不同浏览器版本下载驱动,并具有更快的运行速度。

它支持直接跨<iframe>查找元素,无需像 Selenium 那样繁琐地切入切出。

3)极简的定位语法

提供了非常简洁的元素查找语法。

例如,查找包含特定文本的元素,

在 Selenium 中需要使用复杂的WebDriverWait和By.XPATH,

而在 DrissionPage 中只需tab('some text', timeout=10)。

4)多标签页与并发操作

它将每个标签页和 <iframe>都视为独立的对象,

可以同时操作多个标签页,甚至是非激活状态的标签页,无需来回切换。

5)无处不在的等待机制

在查找元素、等待下拉列表、处理弹窗等大量场景中内置了超时和自动重试功能,

极大提升了程序的稳定性。

6)丰富的集成功能

内置了强大的下载工具,支持大文件分块、多线程下载;

还能直接读取浏览器缓存来保存图片,无需通过 GUI 操作。

2 使用示例

2.1 快速开始

DrissionPage 支持 Windows、Linux、Mac** 操作系统,需要 Python 3.6及以上版本,

并支持Chromium 内核的浏览器(如 Chrome、Edge)。

通过 pip 即可安装。

pip install DrissionPage

以下代码展示了如何启动浏览器并访问一个页面。

from DrissionPage import Chromium

创建 Chromium 对象

browser = Chromium()

获取最新的标签页

tab = browser.latest_tab

访问网页

tab.get('https://www.drissionpage.cn')

2.2 Selenium对比

DrissionPage 常被视为 Selenium 的替代方案,两者在多个方面存在差异。

对比维度 DrissionPage Selenium
技术路线 基于自研内核,直接与浏览器 CDP 协议通信 基于 WebDriver 协议,需要浏览器驱动
驱动依赖 无需下载浏览器驱动 需要单独下载和管理对应版本的驱动
运行速度 更快,有实测数据显示页面加载耗时约 0.8s ,而 Selenium 约 3.2s 相对较慢,尤其在启动和操作时
多标签页 支持同时操作多个标签页,无需切换 同一时间只能操作一个标签页,需使用 switch_to()
Iframe 操作 可直接跨 <iframe> 查找元素,逻辑清晰 需要逐层切入切出,操作繁琐
生态与社区 相对较新,生态和国际化程度不如 Selenium 历史悠久,生态成熟,社区资源丰富
适用场景 适合中文用户、相对简单的自动化或爬虫任务, 尤其擅长处理需要频繁操作 DOM 或依赖浏览器上下文的场景 适合需要多种编程语言支持、广泛社区资源的企业级项目

2.3 限制条款

需要注意,根据其使用条款,DrissionPage 禁止用于违法用途、攻击骚扰、商业使用(需授权),并且使用时必须遵守目标网站的robots.txt协议。

3 harness辅助

这里进一步在harness中,验证DrissionPage打开浏览器获取特定股票的行情数据。

提示词示例如下

DrissionPage,使用chrome浏览器,在东方财富平台,获取格力电器的股价、资金流动数据。

输出结果示例如下

虽然harness经过反复尝试跑通了该示例,但初步看仅具备演示价值。

整体运行过程,不仅需要自主下载和安装DrissionPage。

harness还需要反复修改python脚本来解决运行过程中遇到的各种异常和错误。

如果实际要获取类似数据,AKShare类工具会更专业和合适。

reference


drissionpage

https://www.drissionpage.cn/

DrissionPage

https://github.com/g1879/DrissionPage

AKShare

https://akshare.akfamily.xyz/introduction.html

deepseek harness

https://www.deepseek.com/en/harness/

相关推荐
饭后一颗花生米8 小时前
GitHub Actions 自动化:5 个真实运维提效案例
运维·自动化·github
AI_work8 小时前
43 号令下招投标全流程留痕分析:电子卷宗 15 年保存与投标人文档合规体系重构
大数据·人工智能·ai·重构
乐橙开放平台8 小时前
跨地域监控难管理?通过 GB28181 把各地海康大华乐橙摄像头注册到云端平台
开发语言·笔记·物联网·自动化·php·音视频·智能家居
源图客9 小时前
Apache Flink 2.3.0(最新版本)
大数据·flink·apache
Canmag 兴隆磁性9 小时前
钕铁硼磁片取向方向检测自动化方案:从人工目检到流水线在线分选的工程实践
运维·数据库·自动化·工业自动化·钕铁硼·自动化检测·磁材料
隔振降噪研究员9 小时前
裁断机一响,楼板为什么会跟着抖?
大数据·linux·数据库·人工智能
zhongben_keji9 小时前
本地生活 APP 开发:城市 × 品类 × 履约形态的三维网格与三套账
java·大数据·生活
乐橙开放平台9 小时前
离岗检测怎么实现?通过客流相机或 AI 摄像头识别岗位区域无人状态,再推送告警消息
人工智能·笔记·后端·数码相机·物联网·自动化·音视频
2301_776045239 小时前
山寨币与比特币之间的关系
大数据·人工智能·区块链
一枕槐安48718 小时前
少样本提示(Few-shot)在业务场景的落地实践
大数据·人工智能·意图分类·mmr多样性·knn检索·动态示例选择