认识 DrissionPage
本教程共 42 篇 · 第 1 篇 · 更新于 2026-07-29 · 约 5 分钟阅读
1. 认识 DrissionPage
本节目标:搞懂 DrissionPage 是什么、解决什么问题、和同类工具比有什么优势。学完能对这门技术有个整体印象。
网页自动化常见的两种方式:直接发数据包,或者控制浏览器操作页面。
前者轻量快速,像 requests 库就是典型代表。但遇到加密参数或复杂请求时,调试难度直线上升。
后者直观可靠,像 selenium 就是浏览器自动化的老牌工具。但性能偏低,而且不能同时收发数据包。
DrissionPage 把两者整合到了一起。
Driver + Session 合体
这个名字就是它的设计哲学。
Driver 是操作浏览器的对象,Session 是管理网络连接的对象。Drission = Driver + Session。
从 3.0 版本开始,作者放弃了基于 selenium 和 requests 的封装方案。重新实现了底层功能,脱离了对这两个库的依赖。
这意味着:功能更多、运行更快、开发更灵活。
4.0 版本在 3.0 经验上做了底层重构,逻辑更合理,API 更统一。我们教程使用的 4.1.1.4 就是这个体系下的版本。
与 selenium、requests 的关系
DrissionPage 和 selenium、requests 不是替代关系,是升级关系。
它吸收了 selenium 控制浏览器的能力,也融合了 requests 高效收发数据的能力。
来看个最直观的例子:
# DrissionPage 定位包含"abc"文本的元素
ele = tab('abc')
# selenium 写法
ele = driver.find_element(By.XPATH, '//*[contains(text(), "abc")]')
# requests 获取页面后需要再用 lxml 解析
response = requests.get(url)
tree = etree.HTML(response.text)
ele = tree.xpath('//*[contains(text(), "abc")]')
DrissionPage 一行代码搞定的事,selenium 要写复杂的 xpath,requests 还得搭配解析库。
核心架构
DrissionPage 以页面为基本操作单位。
操作逻辑很简单:创建页面对象 -> 获取元素对象 -> 读取或操作元素。
整个库有三种页面对象:
- ChromiumPage:控制浏览器,自带标签页
- SessionPage:只收发数据包,不启动浏览器
- WebPage:既能控制浏览器,也能收发数据包
这三种对象覆盖了网页自动化的所有场景。后面章节会详细展开。
TIP:如果你觉得概念有点抽象,没关系。后面的章节会结合实际操作帮你理解。先有个整体印象就够了。