DrissionPage:让你的 Python 爬虫和自动化脚本飞起来!
itomcoil 2025-04-30 17:33 17 浏览
还在为复杂的网页自动化和数据抓取而头疼吗?别担心,DrissionPage 来了!这个由 g1879 大佬开发的开源项目,就像一位全能选手,既能像浏览器一样操控网页,又能像 requests 一样高效收发数据包,简直是 Python 爬虫和自动化脚本的福音。
一、项目简介
DrissionPage,正如其名,是一个强大的网页自动化工具,它基于 Python,却拥有超越传统工具的性能和灵活性。它不仅能控制浏览器,还能直接处理数据包,甚至可以将两者结合使用,让你在网页自动化和数据抓取之间自由切换,不再受限于单一模式。
DrissionPage 的目标是“简单且强大”,它内置了许多人性化设计和便捷功能,让你的代码更简洁优雅,开发效率更高。如果你厌倦了繁琐的配置和复杂的语法,那么 DrissionPage 绝对值得你一试。
二、核心功能
1. 自研内核,性能飞跃
DrissionPage 采用完全自研的内核,不依赖于 webdriver,这意味着你无需为不同版本的浏览器下载不同的驱动,告别了版本兼容的烦恼。它运行速度更快,可以跨 iframe 查找元素,无需繁琐的切入切出操作,把 iframe 当普通元素对待,逻辑更清晰。
2. 强大的元素定位
DrissionPage 提供了极简的定位语法,让你查找元素更加便捷。它还内置了等待和自动重试机制,即使在不稳定的网络环境下,也能保证程序的稳定运行。
3. 浏览器和数据包双管齐下
DrissionPage 不仅能控制浏览器,还能直接收发数据包。你可以根据实际需求,选择最适合的方式进行操作。例如,对于需要模拟用户行为的场景,可以使用浏览器控制;对于只需要获取数据的场景,可以使用数据包收发,效率更高。
4. 更多亮点功能
- 多标签页操作: 可以同时操作多个标签页,无需切换,效率更高。
- 缓存读取: 可以直接读取浏览器缓存来保存图片,无需用 GUI 点击保存。
- 网页截图: 可以对整个网页截图,包括视口外的部分。
- Shadow-root 处理: 可以处理非 open 状态的 shadow-root。
- 下载工具: 提供强大的下载工具,操作浏览器也能享受高速且可靠的下载功能。
- 配置管理: 使用 ini 文件保存常用配置并自动调用,提供便捷设置。
- 解析引擎: 内置 lxml 作为解析引擎,解析速度提升几个数量级。
- POM 模式封装: 以 POM 模式封装,可直接用于测试,且易于扩展。
三、部署方式
DrissionPage 支持 Windows、Linux 和 Mac 系统,Python 版本要求 3.6 以上。
1. 安装
你可以通过 pip 命令轻松安装 DrissionPage:
pip install DrissionPage
2. 浏览器配置
DrissionPage 默认控制 Chrome 浏览器,但也支持其他 Chromium 内核的浏览器,如 Edge。
2.1 自动查找
程序默认会自动在系统内查找 Chrome 路径,如果你的浏览器安装在默认位置,通常无需额外配置。
2.2 手动设置
如果程序无法自动找到浏览器路径,你需要手动设置。
- 方法一: 使用代码设置:
- from DrissionPage import ChromiumOptions path = r'D:\Chrome\Chrome.exe' # 请改为你电脑内Chrome可执行文件路径 ChromiumOptions().set_browser_path(path).save()
- 方法二: 使用命令行设置:
- dp -p "D:\Chrome\chrome.exe"
- 注意: 确保命令行环境与项目环境一致,并先使用 cd 命令定位到项目路径。
四、使用方式
1. 简单示例:登录 Gitee
以下代码演示了如何使用 DrissionPage 控制浏览器登录 Gitee:
from DrissionPage import Chromium
# 启动或接管浏览器,并创建标签页对象
tab = Chromium().latest_tab
# 跳转到登录页面
tab.get('https://gitee.com/login')
# 定位到账号文本框,获取文本框元素
ele = tab.ele('#user_login')
# 输入账号
ele.input('您的账号')
# 定位到密码文本框并输入密码
tab.ele('#user_password').input('您的密码')
# 点击登录按钮
tab.ele('@value=登 录').click()
2. 代码解析
- Chromium():创建 Chromium 对象,用于连接浏览器。
- latest_tab:获取一个标签页对象。
- get():访问指定网址,等待页面加载完成。
- ele():查找元素,返回一个 ChromiumElement 对象。
- input():对元素输入文本。
- click():点击元素。
3. 更多用法
DrissionPage 的功能远不止这些,你可以通过阅读官方文档了解更多用法,例如:
- 元素操作:获取元素属性、文本内容、执行 JavaScript 代码等。
- 数据包收发:发送 GET/POST 请求,处理响应数据。
- 文件下载:高速下载文件,支持断点续传。
- 多线程/多进程:提高程序运行效率。
五、总结
DrissionPage 是一款功能强大、易于使用的 Python 网页自动化工具,它集成了浏览器控制和数据包收发功能,并提供了许多人性化的设计和便捷功能。无论你是爬虫爱好者,还是自动化脚本开发者,DrissionPage 都能帮助你提高效率,简化开发流程。
相关推荐
- selenium(WEB自动化工具)
-
定义解释Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7,8,9,10,11),MozillaF...
- 开发利器丨如何使用ELK设计微服务中的日志收集方案?
-
【摘要】微服务各个组件的相关实践会涉及到工具,本文将会介绍微服务日常开发的一些利器,这些工具帮助我们构建更加健壮的微服务系统,并帮助排查解决微服务系统中的问题与性能瓶颈等。我们将重点介绍微服务架构中...
- 高并发系统设计:应对每秒数万QPS的架构策略
-
当面试官问及"如何应对每秒几万QPS(QueriesPerSecond)"时,大概率是想知道你对高并发系统设计的理解有多少。本文将深入探讨从基础设施到应用层面的解决方案。01、理解...
- 2025 年每个 JavaScript 开发者都应该了解的功能
-
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发。1.Iteratorhelpers开发者...
- JavaScript Array 对象
-
Array对象Array对象用于在变量中存储多个值:varcars=["Saab","Volvo","BMW"];第一个数组元素的索引值为0,第二个索引值为1,以此类推。更多有...
- Gemini 2.5编程全球霸榜,谷歌重回AI王座,神秘模型曝光,奥特曼迎战
-
刚刚,Gemini2.5Pro编程登顶,6美元性价比碾压Claude3.7Sonnet。不仅如此,谷歌还暗藏着更强的编程模型Dragontail,这次是要彻底翻盘了。谷歌,彻底打了一场漂亮的翻...
- 动力节点最新JavaScript教程(高级篇),深入学习JavaScript
-
JavaScript是一种运行在浏览器中的解释型编程语言,它的解释器被称为JavaScript引擎,是浏览器的一部分,JavaScript广泛用于浏览器客户端编程,通常JavaScript脚本是通过嵌...
- 一文看懂Kiro,其 Spec工作流秒杀Cursor,可移植至Claude Code
-
当Cursor的“即兴编程”开始拖累项目质量,AWS新晋IDEKiro以Spec工作流打出“先规范后编码”的系统工程思维:需求-设计-任务三件套一次生成,文档与代码同步落地,复杂项目不...
- 「晚安·好梦」努力只能及格,拼命才能优秀
-
欢迎光临,浏览之前点击上面的音乐放松一下心情吧!喜欢的话给小编一个关注呀!Effortscanonlypass,anddesperatelycanbeexcellent.努力只能及格...
- JavaScript 中 some 与 every 方法的区别是什么?
-
大家好,很高兴又见面了,我是姜茶的编程笔记,我们一起学习前端相关领域技术,共同进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力在JavaScript中,Array.protot...
- 10个高效的Python爬虫框架,你用过几个?
-
小型爬虫需求,requests库+bs4库就能解决;大型爬虫数据,尤其涉及异步抓取、内容管理及后续扩展等功能时,就需要用到爬虫框架了。下面介绍了10个爬虫框架,大家可以学习使用!1.Scrapysc...
- 12个高效的Python爬虫框架,你用过几个?
-
实现爬虫技术的编程环境有很多种,Java、Python、C++等都可以用来爬虫。但很多人选择Python来写爬虫,为什么呢?因为Python确实很适合做爬虫,丰富的第三方库十分强大,简单几行代码便可实...
- pip3 install pyspider报错问题解决
-
运行如下命令报错:>>>pip3installpyspider观察上面的报错问题,需要安装pycurl。是到这个网址:http://www.lfd.uci.edu/~gohlke...
- PySpider框架的使用
-
PysiderPysider是一个国人用Python编写的、带有强大的WebUI的网络爬虫系统,它支持多种数据库、任务监控、项目管理、结果查看、URL去重等强大的功能。安装pip3inst...
- 「机器学习」神经网络的激活函数、并通过python实现激活函数
-
神经网络的激活函数、并通过python实现whatis激活函数感知机的网络结构如下:左图中,偏置b没有被画出来,如果要表示出b,可以像右图那样做。用数学式来表示感知机:上面这个数学式子可以被改写:...
- 一周热门
- 最近发表
- 标签列表
-
- ps图案在哪里 (33)
- super().__init__ (33)
- python 获取日期 (34)
- 0xa (36)
- super().__init__()详解 (33)
- python安装包在哪里找 (33)
- linux查看python版本信息 (35)
- python怎么改成中文 (35)
- php文件怎么在浏览器运行 (33)
- eval在python中的意思 (33)
- python安装opencv库 (35)
- python div (34)
- sticky css (33)
- python中random.randint()函数 (34)
- python去掉字符串中的指定字符 (33)
- python入门经典100题 (34)
- anaconda安装路径 (34)
- yield和return的区别 (33)
- 1到10的阶乘之和是多少 (35)
- python安装sklearn库 (33)
- dom和bom区别 (33)
- js 替换指定位置的字符 (33)
- python判断元素是否存在 (33)
- sorted key (33)
- shutil.copy() (33)