文章目录
- from DrissionPage import ChromiumPage # 以Chrome为例 # 启动浏览器(无头模式可加headless=True) page = ChromiumPage() # 访问网页 page.get(‘https://www.baidu.com’)
- # 通过ID定位搜索框并输入内容 search_box = page.ele(‘#kw’) # CSS选择器语法 search_box.input(‘Python自动化’) # 通过文本定位按钮并点击 search_btn = page.ele(‘text:百度一下’) search_btn.click()
- # 获取标题 print(page.title) # 获取当前URL print(page.url) # 获取元素文本(如第一条搜索结果) first_result = page.eles(‘div.result’)[0].text print(first_result)
- from DrissionPage import ChromiumPage # 初始化 page = ChromiumPage() page.get(‘https://www.baidu.com’) # 操作 page.ele(‘#kw’).input(‘DrissionPage’) page.ele(‘text:百度一下’).click() # 获取结果 results = page.eles(‘div.result c-container’) for i, result in enumerate(results[:3], 1): print(f”{i}. {result.text.split(‘n’)[0]}”) # 关闭浏览器 page.close()
- # 等待元素出现(最多10秒) element = page.wait(‘@div.loading’, timeout=10) # @表示CSS选择器 # 等待页面标题包含特定文本 page.wait(‘title:结果页面’)
- # 切换到新标签页 page.switch_to.new_tab(‘https://example.com’) # 切换到iframe page.switch_to.frame(‘iframe_id’) # 或通过索引page.switch_to.frame(0)
- # 直接操作隐藏的file input upload_input = page.ele(‘input[type=”file”]’) upload_input.send_keys(r’C:testfile.jpg’)
- # 获取页面JS变量 window_width = page.run_js(‘return window.innerWidth’) print(f”窗口宽度: {window_width}”) # 修改页面样式 page.run_js(‘document.body.style.backgroundColor = “lightblue”‘)
目录
- 一、DrissionPage是什么?
- 二、快速安装
- 三、5分钟上手基础操作
- 1. 初始化浏览器会话
- 2. 元素定位与操作
- 3. 获取页面数据
- 4. 完整示例:百度搜索
- 四、进阶功能速览
- 1. 智能等待机制
- 2. 切换窗口/iframe
- 3. 文件上传
- 4. 执行JavaScript
- 五、常见问题解决
- 1. 元素找不到?
- 2. 如何处理登录弹窗?
- 3. 如何截图保存?
- 4. 无头模式设置
- 六、学习资源推荐
- 七、总结
在Python自动化领域,Selenium和Requests是两个常用工具,但各有局限。DrissionPage巧妙结合了两者优势,既能用浏览器自动化处理动态页面,又能通过HTTP请求提升效率。本文将带你从零开始,用10分钟掌握DrissionPage的核心用法。
DrissionPage是一个混合驱动的网页自动化库,核心特点:
- 双引擎驱动:支持Selenium(浏览器渲染)和Requests(HTTP请求)无缝切换
- 简洁API:类似jQuery的选择器语法,操作更直观
- 智能等待:自动处理元素加载延迟
- 多浏览器支持:Chrome/Firefox/Edge等
适合场景:
- 网页数据采集
- 自动化测试
- 表单填写
- 文件上传/下载
- 任何需要模拟用户操作的场景
pip install DrissionPage
如果使用Selenium模式,需额外下载对应浏览器的WebDriver(如chromedriver)
from DrissionPage import ChromiumPage # 以Chrome为例
# 启动浏览器(无头模式可加headless=True)
page = ChromiumPage()
# 访问网页
page.get('https://www.baidu.com')
# 通过ID定位搜索框并输入内容
search_box = page.ele('#kw') # CSS选择器语法
search_box.input('Python自动化')
# 通过文本定位按钮并点击
search_btn = page.ele('text:百度一下')
search_btn.click()
# 获取标题
print(page.title)
# 获取当前URL
print(page.url)
# 获取元素文本(如第一条搜索结果)
first_result = page.eles('div.result')[0].text
print(first_result)
from DrissionPage import ChromiumPage
# 初始化
page = ChromiumPage()
page.get('https://www.baidu.com')
# 操作
page.ele('#kw').input('DrissionPage')
page.ele('text:百度一下').click()
# 获取结果
results = page.eles('div.result c-container')
for i, result in enumerate(results[:3], 1):
print(f"{i}. {result.text.split('n')[0]}")
# 关闭浏览器
page.close()
# 等待元素出现(最多10秒)
element = page.wait('@div.loading', timeout=10) # @表示CSS选择器
# 等待页面标题包含特定文本
page.wait('title:结果页面')
# 切换到新标签页
page.switch_to.new_tab('https://example.com')
# 切换到iframe
page.switch_to.frame('iframe_id') # 或通过索引page.switch_to.frame(0)
# 直接操作隐藏的file input
upload_input = page.ele('input[type="file"]')
upload_input.send_keys(r'C:testfile.jpg')
# 获取页面JS变量
window_width = page.run_js('return window.innerWidth')
print(f"窗口宽度: {window_width}")
# 修改页面样式
page.run_js('document.body.style.backgroundColor = "lightblue"')
- 检查选择器是否正确(推荐使用浏览器开发者工具复制CSS选择器)
- 添加显式等待:
page.wait('@selector', timeout=10)
- 确认元素是否在iframe中
page.wait('@selector', timeout=10)
# 示例:处理基本认证弹窗
page.set_auth('username', 'password')
page.get('https://example.com/protected')
page.save('screenshot.png') # 保存当前页面截图
# 启动时添加参数
page = ChromiumPage(headless=True) # 无界面模式
- 官方文档:GitHub – DrissionPage(含完整API参考)
- 选择器练习:使用浏览器开发者工具的
Copy selector功能快速获取元素定位方式
- 实战项目:尝试自动化登录知乎/微博等网站(注意遵守robots协议)
Copy selector功能快速获取元素定位方式
DrissionPage通过统一API简化了网页自动化流程,无论是简单的数据抓取还是复杂的交互操作都能轻松应对。对于初学者,建议从以下步骤开始:
- 掌握基础元素操作(点击/输入/获取文本)
- 学会使用等待机制处理动态内容
- 尝试组合多个操作完成完整流程
掌握这些核心概念后,你可以快速扩展到文件上传、自动化测试等更复杂的场景。现在打开IDE,开始你的第一个DrissionPage自动化项目吧!
到此这篇关于Python使用DrissionPage实现自动化处理的简单入门指南的文章就介绍到这了,更多相关Python DrissionPage自动化内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!
您可能感兴趣的文章:
- Python使用DrissionPage中ChromiumPage进行自动化网页操作
- Python使用DrissionPage实现网页自动化采集
- python使用DrissionPage库进行网页自动化操作和数据提取
- 基于Python的网页自动化工具DrissionPage的使用详解