【学习心得】Python好库推荐——DrissionPage
创始人
2024-12-27 15:12:54
0

        事情的起因是这样,我在复习selenium来进行自动化爬虫任务的时候,发现了一个基于selenium封装的库,他其中的有一个功能(监听网络数据)特别让我兴奋!心想这也太吊了吧!所以我一定要写一篇文章记录下来,同时分享给大家。

一、DrissionPage的介绍

网页自动化的形式通常有两种,它们各有优劣:

  1. 直接向服务器发送数据包,获取需要的数据
  2. 控制浏览器跟网页进行交互

        前者轻量级,速度快,便于多线程、分布式部署,如 requests 库。但当数据包构成复杂,甚至加入加密技术时,开发过程烧脑程度直线上升。鉴于此,DrissionPage 以页面为单位将两者整合,对 Chromium 协议 和 requests 进行了重新封装,实现两种模式的互通,并加入常用的页面和元素控制功能,可大幅降低开发难度和代码量。用于操作浏览器的对象叫 Driver,requests 用于管理连接的对象叫 Session,Drission 就是它们两者的合体。Page 表示以 POM 模式封装。 在旧版本,本库是通过对 selenium 和 requests 的重新封装实现的。从 3.0 版开始,作者另起炉灶,用 chromium 协议自行实现了 selenium 全部功能,从而摆脱了对 selenium 的依赖,功能更多更强,运行效率更高,开发更灵活。

详细的介绍大家可以去看开发者的个人网页。

DirssionPage使用文档icon-default.png?t=N7T8https://g1879.gitee.io/drissionpagedocs/get_start/installation

二、基本使用

(1)安装

pip install DrissionPage

(2)使用逻辑

        无论是控制浏览器,还是收发数据包,其操作逻辑是一致的。即先创建页面对象,然后从页面对象中获取元素对象,通过对元素对象的读取或操作,实现数据的获取或页面的控制。因此,最主要的对象就是两种:页面对象,及其生成的元素对象。

主页面对象有 3 种,它们通常是程序的入口:

  • ChromiumPage:单纯用于操作浏览器的页面对象
# 如果只要控制浏览器 from DrissionPage import ChromiumPage
  • WebPage:整合浏览器控制和收发数据包于一体的页面对象
# WebPage是功能最全面的页面类,既可控制浏览器,也可收发数据包。 from DrissionPage import WebPage
  • SessionPage:单纯用于收发数据包的页面对象
# 如果只要收发数据包 from DrissionPage import SessionPage

(3)快速上手

① 操控浏览器(类似selenium库的功能)
from DrissionPage import ChromiumPage  # 创建页面对象,并启动或接管浏览器 page = ChromiumPage() # 跳转到登录页面 page.get('https://gitee.com/login')  # 定位到账号文本框,获取文本框元素 ele = page.ele('#user_login') # 输入对文本框输入账号 ele.input('您的账号') # 定位到密码文本框并输入密码 page.ele('#user_password').input('您的密码') # 点击登录按钮 page.ele('@value=登 录').click()
② 收发数据包(类似requests库功能)
from DrissionPage import SessionPage  # 创建页面对象 page = SessionPage()  # 爬取3页 for i in range(1, 4):     # 访问某一页的网页     page.get(f'https://gitee.com/explore/all?page={i}')     # 获取所有开源库元素列表     links = page.eles('.title project-namespace-path')     # 遍历所有元素     for link in links:         # 打印链接信息         print(link.text, link.link)

 三、重点讲一个我喜欢的功能

(1)监听网络数据

from DrissionPage import ChromiumPage  page = ChromiumPage() page.get('https://gitee.com/explore/all')  # 访问网址,这行产生的数据包不监听  page.listen.start('gitee.com/explore')  # 开始监听,指定获取包含该文本的数据包 for _ in range(5):     page('@rel=next').click()  # 点击下一页     res = page.listen.wait()  # 等待并获取一个数据包     print(res.url)  # 打印数据包url

监听数据的功能,可以让我们拦截一个请求,并将请求这个数据包所需的请求参数给截获,这样我们就不需要自己去构造加密的请求参数啦,逆向也就省了!是不是很棒!~

 

相关内容

热门资讯

盘点一款!卡农大厅辅助,菜鸟黑... 盘点一款!卡农大厅辅助,菜鸟黑桃a3作弊,法门教程(有挂攻略)1、下载好卡农大厅辅助正确养号方法之后...
技术分享!广东闲来辅助神器免费... 技术分享!广东闲来辅助神器免费版,捉住捣蛋鸡作弊,举措教程(有挂详情)1、超多福利:超高返利,海量正...
必知教程!仟众部落辅助,冰球突... 必知教程!仟众部落辅助,冰球突破辅助软件,方案教程(果真有挂)1、完成仟众部落辅助辅助器v3.3的残...
最新研发!吉祥填大坑有插件吗,... 最新研发!吉祥填大坑有插件吗,四川途游破解安装包,大纲教程(有挂细节)1、四川途游破解安装包脚本辅助...
一分钟揭秘!吉祥填大坑辅助器攻... 一分钟揭秘!吉祥填大坑辅助器攻略,指尖四川辅助破解版,练习教程(有挂工具)1、吉祥填大坑辅助器攻略有...
总算了解!凑一桌小程序辅助器,... 总算了解!凑一桌小程序辅助器,开心游戏快跑辅助,办法教程(有挂助手)1、任何凑一桌小程序辅助器透视是...
一起来讨论!开心庄园脚本辅助器... 一起来讨论!开心庄园脚本辅助器,全来潜山跑风辅助器,妙计教程(有挂技巧)1、玩家可以在全来潜山跑风辅...
每日必备!朋友局app辅助器下... 每日必备!朋友局app辅助器下载,爱玩娱乐暗堡辅助,机巧教程(真的有挂)1)朋友局app辅助器下载辅...
终于清楚!蜀山四川小程序破解版... 终于清楚!蜀山四川小程序破解版下载,拱趴大菠萝技巧,步骤教程(竟然有挂)1、不需要AI权限,帮助你快...
大神推荐!潮友会辅助器,多乐辅... 大神推荐!潮友会辅助器,多乐辅助器免费版,手册教程(有挂实锤)1)潮友会辅助器有没有挂:进一步探索潮...