news 2026/6/10 12:21:59

Python如何使用DrissionPage做自动化:简单入门指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python如何使用DrissionPage做自动化:简单入门指南

在Python自动化领域,Selenium和Requests是两个常用工具,但各有局限。DrissionPage巧妙结合了两者优势,既能用浏览器自动化处理动态页面,又能通过HTTP请求提升效率。本文将带你从零开始,用10分钟掌握DrissionPage的核心用法。


一、DrissionPage是什么?

DrissionPage是一个混合驱动的网页自动化库,核心特点:

  • 双引擎驱动:支持Selenium(浏览器渲染)和Requests(HTTP请求)无缝切换
  • 简洁API:类似jQuery的选择器语法,操作更直观
  • 智能等待:自动处理元素加载延迟
  • 多浏览器支持:Chrome/Firefox/Edge等

适合场景:

  • 网页数据采集
  • 自动化测试
  • 表单填写
  • 文件上传/下载
  • 任何需要模拟用户操作的场景

二、快速安装

pipinstallDrissionPage

⚠️ 如果使用Selenium模式,需额外下载对应浏览器的WebDriver(如chromedriver)


三、5分钟上手基础操作

1. 初始化浏览器会话

fromDrissionPageimportChromiumPage# 以Chrome为例# 启动浏览器(无头模式可加headless=True)page=ChromiumPage()# 访问网页page.get('https://www.baidu.com')

2. 元素定位与操作

# 通过ID定位搜索框并输入内容search_box=page.ele('#kw')# CSS选择器语法search_box.input('Python自动化')# 通过文本定位按钮并点击search_btn=page.ele('text:百度一下')search_btn.click()

3. 获取页面数据

# 获取标题print(page.title)# 获取当前URLprint(page.url)# 获取元素文本(如第一条搜索结果)first_result=page.eles('div.result')[0].textprint(first_result)

4. 完整示例:百度搜索

fromDrissionPageimportChromiumPage# 初始化page=ChromiumPage()page.get('https://www.baidu.com')# 操作page.ele('#kw').input('DrissionPage')page.ele('text:百度一下').click()# 获取结果results=page.eles('div.result c-container')fori,resultinenumerate(results[:3],1):print(f"{i}.{result.text.split('\n')[0]}")# 关闭浏览器page.close()

四、进阶功能速览

1. 智能等待机制

# 等待元素出现(最多10秒)element=page.wait('@div.loading',timeout=10)# @表示CSS选择器# 等待页面标题包含特定文本page.wait('title:结果页面')

2. 切换窗口/iframe

# 切换到新标签页page.switch_to.new_tab('https://example.com')# 切换到iframepage.switch_to.frame('iframe_id')# 或通过索引page.switch_to.frame(0)

3. 文件上传

# 直接操作隐藏的file inputupload_input=page.ele('input[type="file"]')upload_input.send_keys(r'C:\test\file.jpg')

4. 执行JavaScript

# 获取页面JS变量window_width=page.run_js('return window.innerWidth')print(f"窗口宽度:{window_width}")# 修改页面样式page.run_js('document.body.style.backgroundColor = "lightblue"')

五、常见问题解决

1. 元素找不到?

  • 检查选择器是否正确(推荐使用浏览器开发者工具复制CSS选择器)
  • 添加显式等待:page.wait('@selector', timeout=10)
  • 确认元素是否在iframe中

2. 如何处理登录弹窗?

# 示例:处理基本认证弹窗page.set_auth('username','password')page.get('https://example.com/protected')

3. 如何截图保存?

page.save('screenshot.png')# 保存当前页面截图

4. 无头模式设置

# 启动时添加参数page=ChromiumPage(headless=True)# 无界面模式

六、学习资源推荐

  1. 官方文档:GitHub - DrissionPage(含完整API参考)
  2. 选择器练习:使用浏览器开发者工具的Copy selector功能快速获取元素定位方式
  3. 实战项目:尝试自动化登录知乎/微博等网站(注意遵守robots协议)

七、总结

DrissionPage通过统一API简化了网页自动化流程,无论是简单的数据抓取还是复杂的交互操作都能轻松应对。对于初学者,建议从以下步骤开始:

  1. 掌握基础元素操作(点击/输入/获取文本)
  2. 学会使用等待机制处理动态内容
  3. 尝试组合多个操作完成完整流程

掌握这些核心概念后,你可以快速扩展到文件上传、自动化测试等更复杂的场景。现在打开IDE,开始你的第一个DrissionPage自动化项目吧!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 8:48:24

上海AI实验室推出:让AI真正理解“时间流逝“的图像生成基准测试

这项由上海人工智能实验室的田俊曦、李思远、贺聪慧、吴立军、谭诚团队完成的重要研究,发表于2025年12月2日的预印本论文平台arXiv上,论文编号为2512.01816v1。有兴趣深入了解的读者可以通过该编号查询完整的研究资料。当我们观看一部电影时,…

作者头像 李华
网站建设 2026/6/9 20:02:00

Vue3-04 自定义组件Person

文章目录创建目录components写样式注册组件插件: Vue.js devtools调用组件在Vue3中可以使用Vue2语法问题答疑创建目录components 创建Vue文件 写样式 注册组件 components: {Person} # 控制台的Vue插件 来源:极简插件 插件: Vue.js devtools 具体安装步骤 调用组件 在Vue3中…

作者头像 李华
网站建设 2026/5/29 11:42:33

治愈系水流音效合集!从溪流到海浪满足所有场景需求

水流的声音,是自然界最纯净的白噪音,也是最易得的心理疗愈师。一段清澈的溪流声,能冲刷掉大脑中的纷扰;一阵稳定的海浪,能抚平情绪的褶皱。你是否在制作冥想引导音频、治愈系短片、或仅仅是想为自己寻找一段能带来深度…

作者头像 李华
网站建设 2026/5/23 22:06:33

如何将文件一键转二维码?文件生成二维码指南

在数字化办公与信息分享场景中,文件传输的便捷性至关重要。无论是需要分享的会议文档、产品说明书,还是个人作品集、学习资料,将文件生成二维码,只需轻轻一扫就能实现查看与下载,无疑大幅提升了效率。无需复杂的技术操…

作者头像 李华
网站建设 2026/6/10 11:29:57

基于springboot + vue银行柜台管理系统(源码+数据库+文档)

银行柜台管理 目录 基于springboot vue银行柜台管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue银行柜台管理系统 一、前言 博主介绍&…

作者头像 李华
网站建设 2026/6/8 4:13:27

一店一世界:揭秘亚克力、KT板与金属的招牌工艺美学

在商业视觉的战场上,第一眼往往决定了一切。店铺的招牌,不仅是名称的标识,更是品牌气质、经营理念与工艺美学的集中投射。它如同一张无声的商业名片,在川流不息的人潮中,诉说着属于自己的故事。今天,让我们…

作者头像 李华