introduction

DrissionPage 简介

什么是 DrissionPage

DrissionPage 是一个基于 Python 的网页自动化工具,由国内开发者 g1879 开发和维护。该工具名称中的 “Drission” 是 “Driver” 和 “Session” 的组合,代表了它的两大核心功能:

  1. 浏览器控制:可以像 Selenium 一样控制浏览器执行各种操作
  2. 数据收发:可以像 Requests 一样发送和接收网络数据包

DrissionPage 的设计理念是将浏览器自动化和数据请求功能合二为一,让开发者能够根据实际需求灵活选择操作模式,兼顾便利性和高效率。

特点和优势

DrissionPage 具有以下突出特点和优势:

1. 强大自研内核

  • 无需 WebDriver:不依赖 WebDriver,避免了版本兼容问题
  • 无需驱动下载:不需要为不同版本的浏览器下载不同的驱动
  • 运行速度更快:相比传统浏览器自动化工具性能更优

2. 跨 iframe 查找元素

  • 无缝操作 iframe:可直接在不同 iframe 之间查找和操作元素
  • 无需切换上下文:不需要像传统工具那样频繁切换 iframe
  • 清晰的逻辑结构:将 iframe 视为普通元素,简化操作逻辑

3. 多标签页同时操作

  • 并行控制多标签页:无需切换,可同时操作多个标签页
  • 高效处理复杂场景:适合需要在多个页面间协作的自动化任务

4. 简洁强大的元素定位语法

  • 简化的选择器语法:提供简洁而强大的元素定位方式
  • 多种定位方法:支持 CSS 选择器、XPath、文本内容、属性等多种定位方式
  • 链式查找:支持连续查找和筛选元素

5. 内置等待和自动重试机制

  • 智能等待:自动处理页面加载和元素出现的等待
  • 自动重试:遇到网络不稳定时自动重试操作
  • 提高脚本稳定性:减少因网络波动或加载延迟导致的失败

6. 强大的下载工具

  • 高效可靠的下载功能:提供专用的下载工具类
  • 缓存图片处理:可直接读取浏览器缓存并保存图片
  • 批量下载支持:轻松实现大量文件的下载任务

7. 浏览器复用机制

  • 重复使用已打开的浏览器:无需每次重新启动浏览器
  • 便捷的调试体验:极大提升开发调试效率

8. 配置灵活简便

  • INI 配置文件支持:使用简单的配置文件保存常用设置
  • 丰富的定制选项:提供多种参数以适应不同场景需求

9. 高效的解析性能

  • 内置 lxml 解析引擎:解析速度提升数个数量级
  • 高效数据提取:快速从页面提取所需信息

与其他工具的对比

DrissionPage vs Selenium

功能/特性 DrissionPage Selenium
依赖 无需 WebDriver 需要 WebDriver
驱动下载 不需要 需要与浏览器版本匹配的驱动
运行速度 更快 相对较慢
iframe 处理 可直接跨 iframe 操作 需要切换 iframe 上下文
多标签页 可同时操作多个标签页 需要切换标签页
元素定位 提供简洁强大的定位语法 基础定位方法
等待机制 内置智能等待和自动重试 需手动设置等待
下载功能 内置强大下载工具 基础下载功能
浏览器复用 支持 有限支持
配置方式 INI 文件 + 代码配置 主要通过代码配置
学习曲线 简单友好 中等

DrissionPage vs Requests

功能/特性 DrissionPage Requests
浏览器控制 支持 不支持
JavaScript 执行 支持 不支持
处理动态内容 自动处理 需额外工具
处理登录验证 简单 复杂
处理反爬机制 容易 困难
请求速度 s 模式下与 Requests 相当 快速
资源消耗 相对较高
网络请求定制 支持 支持
学习曲线 中等 简单

DrissionPage vs Playwright/Puppeteer

功能/特性 DrissionPage Playwright/Puppeteer
语言 Python JavaScript/Python
设计理念 双模式(浏览器+请求) 主要浏览器自动化
API 设计 简洁易用 相对复杂
跨浏览器支持 主要支持 Chromium 内核 多浏览器支持
调试便利性 较高 中等
浏览器复用 支持 有限支持
中文文档 完善 有限
学习曲线 简单 中等

应用场景

DrissionPage 特别适合以下应用场景:

  1. 自动化测试:Web 应用的功能测试和验证
  2. 数据采集:需要处理复杂 JavaScript 渲染的网站数据采集
  3. 网页自动化操作:表单填写、登录、点击等重复性操作
  4. 混合场景:既需要浏览器交互又需要高效数据处理的场景
  5. 爬虫开发:对抗反爬机制,处理需要登录的网站
  6. 办公自动化:自动化处理网页相关的办公任务

不管您是初学者还是有经验的开发者,DrissionPage 都能帮助您以更简单、更高效的方式完成网页自动化任务。

使用 Hugo 构建
主题 StackJimmy 设计