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
DrissionPage
https://github.com/g1879/DrissionPage
AKShare
https://akshare.akfamily.xyz/introduction.html
deepseek harness