全网最详尽的 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 可以高效处理大多数动态网页场景,兼顾灵活性与易用性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1155820.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BOM是什么?如何理解BOM在整个生产管理中发挥的作用?

很多人一听BOM&#xff0c;第一反应是&#xff1a;不就是一张物料清单吗&#xff1f;有什么复杂的&#xff1f;于是把它当成Excel表格来处理&#xff1a;打印出来贴墙上&#xff0c;改了就手写标注&#xff0c;新人来了看不懂&#xff0c;时间一长越堆越乱。但真相是&#xff1…

【开源工具】深度解析:Python+PyQt5打造微信多开神器 - 原理剖析与完整实现

原理剖析微信多开的核心原理是绕过微信客户端的单实例检测机制。微信默认通过互斥体&#xff08;Mutex&#xff09;或进程检测确保同一台电脑只能运行一个客户端实例。通过修改或绕过这些检测机制&#xff0c;可以实现多开功能。PyQt5作为GUI框架&#xff0c;主要作用是创建可视…

C语言数据类型

1、数据类型 1.1字符型 字符英文单词是character&#xff0c;在C语言中 char 表示字符类型。 char字符型------1字节 [signed] char//有符号的 unsigned char//无符号的 1.2整型 整数英文单词integer&#xff0c;在C语言中 int 表示整型。 //短整型------2字节 short [int] …

如何用5S现场管理系统,让每一次检查都落地

在中小企业里&#xff0c;推行5S管理并不只是打扫卫生那么简单。很多企业每天都有巡检记录、打卡、拍照&#xff0c;但当你走进车间、办公区或者仓库&#xff0c;你会发现现场依旧乱象丛生。不是员工不努力&#xff0c;也不是管理者不重视&#xff0c;而是5S管理本身如果缺少系…

从手写代码备份到分布式协作:Git 安装使用全攻略(附常见场景与最佳实践)

Git 安装指南Windows 系统 访问 Git 官方下载页面&#xff08;https://git-scm.com/downloads&#xff09;&#xff0c;选择 Windows 版本安装包。运行安装程序时&#xff0c;默认选项即可满足大多数需求&#xff0c;注意勾选“Git Bash”以获取终端工具。macOS 系统 通过 Home…

布朗大学揭示医疗角色扮演的双刃剑效应

这项由布朗大学领导、联合图宾根大学共同完成的研究发表于2026年1月的arXiv预印本平台&#xff08;论文编号&#xff1a;arXiv:2601.05376v1&#xff09;&#xff0c;为我们揭开了一个令人意外的发现&#xff1a;当我们给AI医生戴上不同的"人格面具"时&#xff0c;它…

深度学习毕设选题推荐:基于python卷积网络训练识别核桃好坏基于python深度学习卷积网络训练识别核桃好坏

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

德国研究突破:免训练人脸质量评估技术诞生

来自德国弗劳恩霍夫研究院和达姆施塔特工业大学的研究团队近期取得了一项重要突破&#xff0c;他们提出了名为ViTNT-FIQA的全新人脸图像质量评估方法。这项发表于2025年的研究成果发表在计算机视觉领域的顶级会议上&#xff0c;论文编号为arXiv:2601.05741v1&#xff0c;为人脸…

【算法题】归并排序

归并排序是基于分治思想的经典排序算法&#xff0c;核心逻辑是“拆分→排序→合并”&#xff1a;将数组递归拆分为子数组&#xff0c;分别排序后再合并为有序数组。它是稳定排序&#xff08;相同元素相对位置不变&#xff09;&#xff0c;时间复杂度稳定为 O(nlog⁡n)O(n\log n…

Python数学可视化——显函数、隐函数及复杂曲线的交互式绘图技术

Python数学可视化技术概述Python提供了多种库用于数学可视化&#xff0c;包括显函数、隐函数及复杂曲线的交互式绘图。常用工具包括Matplotlib、SymPy、Plotly和Mayavi&#xff0c;适用于2D/3D图形、符号计算及动态交互。显函数绘图显函数&#xff08;如$y f(x)$&#xff09;可…

谢菲尔德大学:AI模型如何在陌生环境中保持“人性化“表现

当我们人类从一个熟悉的环境转移到完全陌生的地方时&#xff0c;往往需要重新适应当地的规则和习惯。比如一个在北京生活多年的人突然搬到成都&#xff0c;虽然同样是说中文&#xff0c;但在表达方式、社交礼仪&#xff0c;甚至是点菜习惯上都需要重新学习和调整。有趣的是&…

Java锁机制八股文

一、简短结论 CAS是基础&#xff1a;所有Java锁机制的底层都依赖CAS实现原子操作AQS是框架&#xff1a;ReentrantLock等JUC锁基于AQS&#xff0c;AQS使用CASCLH队列synchronized是混合锁&#xff1a;经历了偏向锁→轻量级锁→重量级锁的升级过程&#xff0c;内部大量使用CAS锁选…

【2026视频播放器】电脑手视频播放器 PotPlayer‌,KMPlayer,VLC media player,MPV,MPC-HC,GOM Player‌,ACG

视频播放器是我们日常观影、学习、工作的重要工具。本文将为大家推荐10款专业实用的PC端视频播放器&#xff0c;全部纯净无广 &#xff0c;支持超高清解码&#xff0c;满足不同用户的需求。 【地址】&#xff1a;https://tool.nineya.com/s/1iuc1h093 【资源也准备好了】&…

国内首例 AI 伴侣聊天提供者涉黄获刑,二审将开庭;OpenAI :大模型能力过剩,未来重心将转向系统层与应用层丨日报

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的技术」、「有亮点的产品」、「有思考的文章」、「有态度的观点」、「…

微信视频号下载器,蝴蝶号视频下载

自媒体必备神器-微信视频号下载器 - 教你如何下载视频号视频 体积小、使用简单、支持 macOS 和 Windows 系统。 一、下载器简介 对于自媒体人来说&#xff0c;获取和保存微信视频号上的优质视频内容&#xff0c;是日常创作和学习的重要一环。为了帮助大家轻松下载微信视频号…

强烈安利9个AI论文平台,本科生毕业论文轻松搞定!

强烈安利9个AI论文平台&#xff0c;本科生毕业论文轻松搞定&#xff01; AI 工具让论文写作变得轻松高效 在当今这个信息爆炸的时代&#xff0c;本科生的毕业论文写作早已不再是单纯的学术挑战&#xff0c;而是一场与时间、效率和质量的较量。尤其是面对复杂的选题、繁重的文献…

全网最全研究生必用AI论文工具TOP8测评

全网最全研究生必用AI论文工具TOP8测评 2026年研究生必备AI论文工具测评&#xff1a;为何要关注这些工具&#xff1f; 随着人工智能技术的不断进步&#xff0c;越来越多的学术工作者开始依赖AI工具来提升论文写作效率与质量。对于研究生群体而言&#xff0c;从选题、文献综述到…

业务即代码:当DDD穿越古代商帮-第2集:第一次事件风暴

笔言: 在《1999点科技树》第九、十合集&#xff08;看见与守护&#xff1a;分布式系统的观测体系与安全架构&#xff09;中&#xff0c;我曾提及一个写作计划——将 DDD&#xff08;领域驱动设计&#xff09; 与 BIZBOK&#xff08;业务知识体系&#xff09; 深度融合&#xff…

别再纠结了:Lambda 还是 Kappa?流批统一这件事,真没你想得那么玄乎

“别再纠结了&#xff1a;Lambda 还是 Kappa&#xff1f;流批统一这件事&#xff0c;真没你想得那么玄乎”很多人一聊到流-批统一架构&#xff0c;第一反应就是一句话&#xff1a;“Lambda 太复杂&#xff0c;Kappa 才是未来。”听起来很有道理&#xff0c;对吧&#xff1f; 但…

10341_基于Springboot的珠宝销售网站

1、项目包含项目源码、项目文档、数据库脚本、软件工具等资料&#xff1b;带你从零开始部署运行本套系统。2、项目介绍随着科学技术和信息通讯的飞速发展&#xff0c;Internet极大的丰富和改变着我们生活的各个行业。随着Internet的普及应用&#xff0c;人们可以跨越时间和空间…