news 2026/4/16 15:32:12

全网最详尽的 DrissionPage 使用教程:用 Python 轻松玩转动态网页

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
全网最详尽的 DrissionPage 使用教程:用 Python 轻松玩转动态网页

DrissionPage 简介

DrissionPage 是一个基于 Python 的网页自动化工具,结合了浏览器自动化(如 Selenium)和直接 HTTP 请求(如 requests)的优势,适用于动态网页爬取、自动化测试等场景。其核心特点是无需依赖浏览器驱动,可直接与页面交互。


安装与初始化

通过 pip 安装最新版本:

pip install drissionpage

初始化一个页面对象:

from drissionpage import SessionPage page = SessionPage() # 创建会话页面

基础功能

访问网页

page.get('https://example.com') # 发送 GET 请求 page.post('https://example.com', data={'key': 'value'}) # 发送 POST 请求

获取页面元素
通过 CSS 选择器或 XPath 定位元素:

element = page.ele('#id') # 根据 ID 获取元素 elements = page.eles('tag:p') # 获取所有 <p> 标签

提取数据

text = element.text # 获取文本 html = element.html # 获取内部 HTML attr = element.attr('href') # 获取属性值

https://www.zhihu.com/zvideo/1994542664859804729/
https://www.zhihu.com/zvideo/1994542660803924130/
https://www.zhihu.com/zvideo/1994542659507881718/
https://www.zhihu.com/zvideo/1994542658564157496/
https://www.zhihu.com/zvideo/1994542658211824663/
https://www.zhihu.com/zvideo/1994542657029035173/
https://www.zhihu.com/zvideo/1994542656425055942/
https://www.zhihu.com/zvideo/1994542653740711955/
https://www.zhihu.com/zvideo/1994542652935398937/
https://www.zhihu.com/zvideo/1994542652838941229/
https://www.zhihu.com/zvideo/1994542651886835388/
https://www.zhihu.com/zvideo/1994542651177984743/
https://www.zhihu.com/zvideo/1994542648351031351/
https://www.zhihu.com/zvideo/1994542648384565863/
https://www.zhihu.com/zvideo/1994542646887220629/
https://www.zhihu.com/zvideo/1994542645742171537/
https://www.zhihu.com/zvideo/1994542646035767366/
https://www.zhihu.com/zvideo/1994542645658293656/
https://www.zhihu.com/zvideo/1994542645771539405/
https://www.zhihu.com/zvideo/1994542645477912692/
https://www.zhihu.com/zvideo/1994542644014118310/
https://www.zhihu.com/zvideo/1994542643422712473/
https://www.zhihu.com/zvideo/1994542641661108276/
https://www.zhihu.com/zvideo/1994542640717403039/
https://www.zhihu.com/zvideo/1994542641208116044/
https://www.zhihu.com/zvideo/1994542637768782141/
https://www.zhihu.com/zvideo/1994542636338545143/
https://www.zhihu.com/zvideo/1994542634425948071/
https://www.zhihu.com/zvideo/1994542634048435969/
https://www.zhihu.com/zvideo/1994542631477343938/
https://www.zhihu.com/zvideo/1994542629216597734/
https://www.zhihu.com/zvideo/1994542628797178334/
https://www.zhihu.com/zvideo/1994542624544142826/
https://www.zhihu.com/zvideo/1994542623277458022/
https://www.zhihu.com/zvideo/1994542625139758984/
https://www.zhihu.com/zvideo/1994542624070186865/
https://www.zhihu.com/zvideo/1994542625294918978/
https://www.zhihu.com/zvideo/1994542622581220059/
https://www.zhihu.com/zvideo/1994542621872383455/
https://www.zhihu.com/zvideo/1994542619661980427/
https://www.zhihu.com/zvideo/1994542619477423570/
https://www.zhihu.com/zvideo/1994542619372578110/
https://www.zhihu.com/zvideo/1994542618693112008/
https://www.zhihu.com/zvideo/1994542618433046193/
https://www.zhihu.com/zvideo/1994542617954911941/
https://www.zhihu.com/zvideo/1994542618042971582/
https://www.zhihu.com/zvideo/1994542618374342545/
https://www.zhihu.com/zvideo/1994542617610982697/
https://www.zhihu.com/zvideo/1994542617367705013/
https://www.zhihu.com/zvideo/1994542157382582343/


处理动态内容

等待元素加载
设置显式等待,直到元素出现:

page.wait_ele('#loading', timeout=10, state='disappear') # 等待加载动画消失

执行 JavaScript
直接运行 JS 脚本:

page.run_js('window.scrollTo(0, document.body.scrollHeight)') # 滚动到页面底部

表单交互

填写表单
模拟输入和提交:

page.ele('#username').input('admin') # 输入用户名 page.ele('#submit').click() # 点击提交按钮

文件上传

page.ele('input[type="file"]').set('path/to/file.jpg') # 上传文件

高级技巧

拦截请求
监听或修改网络请求:

page.listen.start('api/data') # 监听特定 API 请求 response = page.listen.wait() # 等待并获取响应数据

切换 User-Agent
模拟不同设备访问:

headers = {'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X)'} page.headers.update(headers)

实战示例:爬取动态渲染数据

以下代码模拟滚动页面并提取动态加载的内容:

from drissionpage import SessionPage page = SessionPage() page.get('https://dynamic-website.com') while True: page.run_js('window.scrollBy(0, 500)') # 每次滚动 500 像素 if not page.wait_ele('.load-more', timeout=2): # 检查“加载更多”按钮是否存在 break items = page.eles('.item') for item in items: print(item.text)

常见问题

元素定位失败

  • 检查选择器是否正确,使用开发者工具验证。
  • 增加等待时间或调整动态加载策略。

性能优化

  • 禁用图片加载:page.set.load_mode('none')
  • 使用缓存减少重复请求。

通过以上方法,DrissionPage 可以高效处理大多数动态网页场景,兼顾灵活性与易用性。

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

电商行业的数据分析工具推荐

电商行业的数据分析工具推荐 关键词:电商行业、数据分析工具、数据挖掘、可视化、数据洞察 摘要:本文聚焦于电商行业,深入探讨了适用于该领域的各类数据分析工具。从工具的背景介绍出发,阐述其目的、适用读者和文档结构,详细解释相关术语。接着介绍核心概念与联系,通过文…

作者头像 李华
网站建设 2026/4/3 6:02:51

Pulsar 特性在 AI 场景中的使用!

引言 没有意外&#xff0c;随着模型规模的持续增长和应用场景的日益复杂&#xff0c;AI Infra 也自然地从"单体架构" -> "分布式架构"进行演进&#xff0c;例如&#xff1a; 在大模型训练和推理阶段&#xff0c;随着模型规模的增长&#xff0c;需要通…

作者头像 李华
网站建设 2026/4/7 23:15:56

GRANT SELECT, DELETE ON 职工 TO USER1 WITH GRANT OPTION权限授予命令详解

一、语句结构分解 GRANT SELECT, DELETE ON 职工 TO USER1 WITH GRANT OPTION;各部分含义&#xff1a;部分含义GRANT授权命令关键字SELECT, DELETE授予的权限类型ON 职工权限作用的对象&#xff08;职工表&#xff09;TO USER1权限授予的用户WITH GRANT OPTION特殊权限选项 二、…

作者头像 李华
网站建设 2026/4/16 14:50:08

Linux网络编程-UDP 组播原理与实战

一、UDP 组播核心概念UDP 通信有三种典型模式&#xff0c;组播是单播和广播的中间形态&#xff0c;能精准向指定一组主机通信&#xff0c;大幅节省网络带宽&#xff1a;通信模式特点适用场景单播一对一&#xff08;两台主机端对端通信&#xff09;精准的点对点数据传输&#xf…

作者头像 李华
网站建设 2026/4/16 12:14:29

在外如何用手机像翻相册一样查看其他设备里所有文件?

在外急需调取家里NAS、电脑的资料&#xff1f;别再折腾U盘和复杂的远程设置了。今天就教你用节点小宝&#xff0c;像翻看自己手机相册一样&#xff0c;随时随地、直观地访问你所有设备里的文件。一把钥匙 打开所有设备的“文件抽屉”节点小宝的“远程文件”功能就是一把钥匙。它…

作者头像 李华
网站建设 2026/4/16 11:00:49

平价药店销售与管理系统

平价药店销售与管理系统一、系统概述随着信息技术的飞速发展&#xff0c;传统的药店管理方式已经不能满足现代化经营的需求。平价药店销售与管理系统旨在通过计算机技术为药店提供全面的信息化管理&#xff0c;涵盖药品信息管理、库存管理、销售管理、会员管理、收银结算等多项…

作者头像 李华