新一代自动化利器-DrissionPage
熟悉的小伙伴知道我的工作有相当一部分是自动化,在探索相关的技术上一直没停下脚步,我痛恨selenium、playwright的非标准内核机制,也曾对clicknium引进了新的问题无语,以及接口爬取数据时踩不完的坑,无论是b端还是c端还是接口的探索到了瓶颈仿佛山穷水尽,直到我遇到了它——DrissionPage
DrissionPage亮点
drissionpage的亮点在其代码库里介绍了一大堆,有喜欢的朋友可以自行查看:https://toscode.gitee.com/g1879/DrissionPage。
下面我只谈谈我喜欢的亮点。
- 注释全中文,很详细。有很多国人的包开发完写的英文,对于通篇中文注释的我反手就是一个赞。
- 无需 chromedriver。你知道这意味着什么吗,再也不用担心针对driver的反爬了,真的开心。
- 兼顾浏览器自动化的便利性和 requests 的高效率。是的,它整合了requests。
- 语法便利。真的厌倦了对selenium的各种罗里吧嗦的封装,而它可以跨
<iframe>
查找元素,无需切入切出。可同时操作多个tab
标签页,无需切换。 - 更快的运行速度。
安装配置
- 安装
- pip 安装即可
pip install DrissionPage
- pip 安装即可
- 配置
- 在命令行调出python,输入如下代码即可,记得浏览器路径设置为自己的。
from DrissionPage.easy_set import set_paths set_paths(browser_path=r'C:\Program Files\Google\Chrome\Application\chrome.exe')
- 在命令行调出python,输入如下代码即可,记得浏览器路径设置为自己的。
- 运行时关闭当前浏览器
UI自动化脚本举例
登录vivo创作者中心。
import time from DrissionPage import ChromiumPage # from DrissionPage.easy_set import set_paths # set_paths(browser_path=r'C:\Program Files\Google\Chrome\Application\chrome.exe') page = ChromiumPage() page.get('https://designer.vivo.com.cn/#/login') ele = page.ele("@placeholder=支持邮箱/用户名登录").input('yourname') page.ele('@placeholder=请输入密码').input("yourpassword") page.ele("登录").click() time.sleep(1000)
收发数据包,比如爬取某个网站的信息,结果获取到了。
混合模式。百度搜索例子演示两种模式切换。
from DrissionPage import WebPage # d: 操作浏览器模式 page = WebPage('d') page.get('http://www.baidu.com') page.ele('#kw').input('DrissionPage') page.ele('@value=百度一下').click(wait_loading=True) # 切换到s模式: 收发包模式 page.change_mode() results = page.eles('tag:h3') for result in results: print(result.text)
更多例子和 API 请阅读官方文档,在此就不再演示。
总结
这个库设计初衷,是将web和api合而为一。
绕过了很多的爬虫中遇到的坑。
自研内核。
无数人性化设计。
喜欢的朋友可以看看作者的仓库,真的是干货满满:https://toscode.gitee.com/g1879/DrissionPage
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
2021-02-23 音频处理库:pydub与ffmpeg
2021-02-23 有趣的python库-MyQR