前言

在当今的软件开发与测试领域,网页自动化已成为不可或缺的一环。无论是数据采集、UI 测试,还是流程模拟,开发者都希望找到一种既能操作真实浏览器,又能高效收发网络请求的工具。在 CANN 仓库 中,DrissionPage 正是这样一款基于 Python 的强大网页自动化库,它巧妙融合了浏览器控制与 HTTP 请求的优势,为开发者提供了简洁优雅的编程体验。

什么是 DrissionPage?

DrissionPage 是一个开源的 Python 库,支持两种模式:

  • WebPage 模式:通过控制 Chrome 或 Edge 浏览器(基于 DevTools 协议),实现对页面元素的真实交互;
  • SessionPage 模式:基于 requests 库,以无头方式高效发送 HTTP 请求,适合对性能要求高的场景。

更妙的是,DrissionPage 允许在同一个脚本中无缝切换两种模式,兼顾“所见即所得”的可视化调试与后台高速运行的需求。

安装与准备

首先,确保已安装 Python(建议 3.8+),然后通过 pip 安装 DrissionPage:

pip install DrissionPage

注意:若使用 WebPage 模式,需提前安装 Chrome 或 Edge 浏览器,并确保其版本与系统兼容。

示例一:使用 SessionPage 快速抓取网页内容

假设我们要从一个公开新闻网站抓取标题列表(无需 JavaScript 渲染):

from DrissionPage import SessionPage

# 创建 SessionPage 实例
page = SessionPage()

# 访问目标 URL
page.get('https://example-news-site.com/latest')

# 使用 CSS 选择器提取所有文章标题
titles = page.eles('css:h2.article-title')

# 打印标题文本
for title in titles:
    print(title.text)

此代码不启动浏览器,执行速度快,资源占用低,非常适合批量数据采集任务。

示例二:使用 WebPage 模拟用户登录

当目标网站依赖 JavaScript 动态加载或需要模拟真实用户行为时,可切换至 WebPage 模式:

from DrissionPage import WebPage

# 启动浏览器(自动查找已安装的 Chrome/Edge)
page = WebPage()

# 打开登录页
page.get('https://example-login.com')

# 输入用户名和密码
page.ele('#username').input('your_username')
page.ele('#password').input('your_password')

# 点击登录按钮
page.ele('#login-btn').click()

# 等待跳转后检查是否成功
if page.wait.url_change():
    print("登录成功!当前页面:", page.url)
else:
    print("登录失败或超时")

DrissionPage 的元素定位语法极其灵活,支持 CSS 选择器、XPath、文本匹配等多种方式,且自动处理 iframe、Shadow DOM 等复杂结构。

为什么选择 DrissionPage?

  • 统一 API:无论使用哪种模式,核心方法(如 .get(), .ele(), .input())保持一致,降低学习成本;
  • 智能等待:内置智能等待机制,自动处理页面加载、元素出现等异步问题;
  • 轻量高效:SessionPage 模式比 Selenium 快数倍,WebPage 模式比 Puppeteer 更贴近 Python 风格;
  • 活跃社区:作为 CANN 仓库中的明星项目(Star 数达 265+),持续更新并响应开发者需求。

结语

在 CANN 仓库众多高质量项目中,DrissionPage 凭借其“双模驱动、简洁优雅”的设计理念脱颖而出。它不仅解决了传统自动化工具在效率与真实性之间的矛盾,更为 Python 开发者提供了一套现代化的网页交互解决方案。无论你是数据工程师、测试人员,还是爬虫爱好者,DrissionPage 都值得加入你的工具箱。

cann组织链接:https://atomgit.com/cann
ops-nn仓库链接:https://atomgit.com/cann/ops-nn

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐