找回密码
 会员注册
查看: 31|回复: 0

学习心得Python好库推荐——DrissionPage

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
64768
发表于 2024-9-11 17:38:19 | 显示全部楼层 |阅读模式
事情的起因是这样,我在复习selenium来进行自动化爬虫任务的时候,发现了一个基于selenium封装的库,他其中的有一个功能(监听网络数据)特别让我兴奋!心想这也太吊了吧!所以我一定要写一篇文章记录下来,同时分享给大家。一、DrissionPage的介绍网页自动化的形式通常有两种,它们各有优劣:直接向服务器发送数据包,获取需要的数据控制浏览器跟网页进行交互        前者轻量级,速度快,便于多线程、分布式部署,如requests库。但当数据包构成复杂,甚至加入加密技术时,开发过程烧脑程度直线上升。鉴于此,DrissionPage以页面为单位将两者整合,对Chromium协议和requests进行了重新封装,实现两种模式的互通,并加入常用的页面和元素控制功能,可大幅降低开发难度和代码量。用于操作浏览器的对象叫Driver,requests用于管理连接的对象叫Session,Drission就是它们两者的合体。Page表示以POM模式封装。在旧版本,本库是通过对selenium和requests的重新封装实现的。从3.0版开始,作者另起炉灶,用chromium协议自行实现了selenium全部功能,从而摆脱了对selenium的依赖,功能更多更强,运行效率更高,开发更灵活。详细的介绍大家可以去看开发者的个人网页。DirssionPage使用文档https://g1879.gitee.io/drissionpagedocs/get_start/installation二、基本使用(1)安装pipinstallDrissionPage(2)使用逻辑        无论是控制浏览器,还是收发数据包,其操作逻辑是一致的。即先创建页面对象,然后从页面对象中获取元素对象,通过对元素对象的读取或操作,实现数据的获取或页面的控制。因此,最主要的对象就是两种:页面对象,及其生成的元素对象。主页面对象有3种,它们通常是程序的入口:ChromiumPage:单纯用于操作浏览器的页面对象#如果只要控制浏览器fromDrissionPageimportChromiumPageWebPage:整合浏览器控制和收发数据包于一体的页面对象#WebPage是功能最全面的页面类,既可控制浏览器,也可收发数据包。fromDrissionPageimportWebPageSessionPage:单纯用于收发数据包的页面对象#如果只要收发数据包fromDrissionPageimportSessionPage(3)快速上手①操控浏览器(类似selenium库的功能)fromDrissionPageimportChromiumPage#创建页面对象,并启动或接管浏览器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库功能)fromDrissionPageimportSessionPage#创建页面对象page=SessionPage()#爬取3页foriinrange(1,4):#访问某一页的网页page.get(f'https://gitee.com/explore/all?page={i}')#获取所有开源库
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-28 22:06 , Processed in 1.183030 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表