DrissionPage
AI编程

DrissionPage

DrissionPage 是一个基于 Python 的网页自动化工具库,整合浏览器控制与数据包收发于一体,无需 WebDriver,语法简洁高效,适合网页采集和自动化测试。

快点收藏起来

DrissionPage 是一个基于 Python 的网页自动化工具库,将浏览器控制与数据包收发整合到同一套 API 中。它不依赖 WebDriver,直接通过 DevTools 协议操控 Chromium 内核浏览器,同时提供类似 requests 的数据包操作能力,适合需要网页数据采集、表单自动提交、页面监控或自动化测试的 Python 开发者。

这是什么产品

DrissionPage 是由国内开发者 g1879 创建并维护的 Python 开源项目,定位为「新一代网页自动化工具」。它的核心理念是将浏览器自动化和数据包请求两种模式统一到一个框架中,开发者可以根据目标页面的复杂程度灵活切换。对于静态页面或纯 API 接口,使用数据包模式即可高效完成;对于需要 JavaScript 渲染或人机交互的动态页面,则切换到浏览器模式处理。这种双模式架构让开发者不必在 Selenium 和 requests 之间反复切换,一套代码就能覆盖绝大多数网页自动化场景。项目在 GitHub 上获得了数万 star 的广泛关注,发展至今已经历多个大版本迭代,持续优化 API 设计和稳定性。中文文档体系非常完善,从入门教程到高级用法都有详尽覆盖,对国内 Python 开发者尤为友好。在网页采集和自动化测试领域,它逐渐成为 Selenium 之外一个值得认真考虑的替代方案。

DrissionPage 官方首页,展示产品定位为新一代 Python 网页自动化工具

核心功能与工作流

DrissionPage 提供三种核心页面对象来应对不同的自动化需求。ChromiumPage 是浏览器控制模式,基于 Chromium DevTools Protocol 直接与浏览器通信,不需要单独安装 WebDriver 或 chromedriver,只要系统中有 Chrome 或 Edge 等 Chromium 内核浏览器即可使用。SessionPage 是数据包模式,行为类似 requests 库,用于不需要渲染 JavaScript 的纯 HTTP 请求场景,速度快且资源消耗低。WebPage 则是前两者的混合体,可以在同一个任务中根据需要在浏览器模式和数据包模式之间无缝切换,共享登录状态和 cookie。

在元素定位方面,DrissionPage 提供了独特的语法体系。除了支持常见的 CSS 选择器和 XPath 之外,还设计了一套简洁的链式查找语法,可以按照文本内容、属性值、标签类型等条件快速定位页面元素。例如用 ele('tag:div@@text():登录') 这类写法来查找包含特定文本的 div 元素,比原生 XPath 的写法更直观。此外还内置了等待机制、iframe 操作、文件下载管理、标签页管理、截图等常用功能,减少了开发者编写辅助代码的工作量。在实际使用中,开发者可以通过链式调用快速完成「打开页面→定位元素→提取数据→保存结果」的完整流程。对于需要登录后才能访问的页面,WebPage 模式可以先用浏览器完成登录和验证码处理,再切换到数据包模式高速抓取数据,兼顾了操作便利性和采集效率。

如何开始使用

DrissionPage 的安装非常简单,通过 pip 即可完成。运行以下命令安装最新版本:

pip install DrissionPage

安装完成后,确保系统中已安装 Chrome 或其他 Chromium 内核浏览器。以下是一个来自官方文档的基本使用示例,演示如何打开一个网页并获取页面标题:

from DrissionPage import ChromiumPage

page = ChromiumPage()
page.get('https://www.baidu.com')
print(page.title)

如果只需要发送 HTTP 请求而不启动浏览器,可以使用 SessionPage:

from DrissionPage import SessionPage

page = SessionPage()
page.get('https://www.baidu.com')
print(page.html[:200])

官方文档网站提供了从环境配置到高级用法的完整教程,并按照功能模块分类组织,新用户建议从「开始使用」章节逐步阅读。

DrissionPage 的 GitHub 开源仓库页面,展示项目活跃度与社区关注度

价格、开源状态与部署方式

DrissionPage 是完全免费的开源项目,代码托管在 GitHub。该项目使用自定义许可证,允许免费使用但对商业分发有一定限制,具体条款建议在 GitHub 仓库的 LICENSE 文件中确认。作为一个 Python 库,DrissionPage 通过 pip 安装到本地 Python 环境中使用,属于本地部署模式,不涉及 SaaS 服务或云端资源。开发者可以在本地开发环境、服务器或 Docker 容器中运行基于 DrissionPage 的自动化脚本。在服务器端部署时,通常需要配合无头浏览器模式运行。DrissionPage 支持通过配置参数启用 headless 模式,也支持连接已打开的远程浏览器实例,适合与 CI/CD 流水线或定时任务集成。项目的依赖非常轻量,核心包本身只依赖少数几个第三方库,安装和部署的资源开销都比较小。

适合哪些人和场景

DrissionPage 最适合以下几类用户和场景:需要进行网页数据采集的 Python 开发者,特别是面对既有静态页面又有动态渲染页面的混合采集任务;需要自动化完成网页表单填写、登录操作、批量提交等重复性工作的技术人员;希望进行 Web 自动化测试但觉得 Selenium 配置 WebDriver 过于繁琐的测试工程师。由于文档和社区主要以中文为主,对中文开发者的上手门槛特别低。对于数据分析师和研究人员,如果日常需要从网站上批量获取公开数据用于分析,DrissionPage 的学习曲线远低于从零搭建 Scrapy 爬虫框架。不过它更偏向于技术用户——你需要具备基本的 Python 编程能力才能有效使用,纯非技术背景的用户可能需要先补充 Python 编程基础知识后再使用。

DrissionPage 官方文档快速上手指南,展示从安装到首次使用的完整流程

优势与限制

DrissionPage 的核心优势在于其统一的双模式架构。相比传统方案中需要分别使用 Selenium 控制浏览器和 requests 发送请求,DrissionPage 让开发者在一个项目中同时使用两种能力,还能共享会话状态。不依赖 WebDriver 这一特点也消除了版本匹配、驱动下载等常见痛点。中文文档覆盖全面,示例丰富,降低了国内用户的学习成本。内置的文件下载管理器可以自动处理下载任务的重命名和目录指定,省去了手动监控下载进度的繁琐步骤。标签页管理和多 iframe 操作也相当直观,比在 Selenium 中处理同类场景要简洁得多。

限制方面需要注意:DrissionPage 目前仅支持 Chromium 内核浏览器,不支持 Firefox 或 Safari;使用自定义许可证而非 MIT 或 Apache 等宽松许可,商业使用时需仔细审查条款;作为个人维护的项目,长期维护的连续性取决于作者的投入;国际社区和英文文档覆盖有限,海外团队协作时可能面临文档障碍。此外,对于纯粹的大规模分布式爬虫场景,Scrapy 的异步架构和中间件生态可能更合适。

对比与选择建议

在 Python 网页自动化领域,DrissionPage 的直接竞品包括 Selenium、Playwright 和 Scrapy。Selenium 是最老牌的浏览器自动化框架,生态最成熟,但需要配置 WebDriver 且 API 相对冗长。Playwright 由微软维护,支持多浏览器(Chromium、Firefox、WebKit),异步 API 设计现代,但没有内置的数据包模式。Scrapy 专注于大规模爬虫,有完善的中间件和管道机制,但不具备浏览器控制能力。DrissionPage 的差异化在于将浏览器控制和 HTTP 请求合二为一的设计,加上无需 WebDriver 的便利性。如果你的工作以中文网页为主且需要在两种模式间频繁切换,DrissionPage 是值得优先尝试的选择。如果需要跨浏览器测试或更大规模的分布式采集,则 Playwright 或 Scrapy 可能更合适。值得注意的是,DrissionPage 和上述工具并不完全互斥——部分开发者在同一个项目中同时使用 DrissionPage 处理前端交互和 Scrapy 管理大规模调度,各取所长。选择时建议根据团队的技术栈和具体场景来评估,而不是简单追求某一个框架覆盖所有需求。

结论

DrissionPage 为 Python 开发者提供了一个实用且易上手的网页自动化方案,特别适合需要同时处理动态和静态页面的场景。中文文档完善、安装简单、无需 WebDriver 配置是它的核心吸引力。建议访问官方文档网站从「开始使用」章节入手,先运行浏览器模式和数据包模式的基础示例,感受两种模式切换的便利性,再根据实际项目需求深入学习元素定位和高级配置。

官方来源

相关导航

发表回复