​DrissionPage,Python浏览器自动化又一神器~

来源快学pythonDrissionPage 是一个基于 python 的网页自动化工具。它既能控制浏览器,也能收发数据包,还能把两者合而为一。可兼顾浏览器自动化的便利性和 requests 的高效率。它功能强大,内置无数人性化设计和便捷功能。它的语法简洁而优雅,代码量少,对新手友好。

背景

用 requests 做数据采集面对要登录的网站时,要分析数据包、JS 源码,构造复杂的请求,往往还要应付验证码、JS 混淆、签名参数等反爬手段,门槛较高,开发效率不高。使用浏览器,可以很大程度上绕过这些坑,但浏览器运行效率不高。

因此,这个库设计初衷,是将它们合而为一,同时实现“写得快”和“跑得快”。能够在不同需要时切换相应模式,并提供一种人性化的使用方法,提高开发和运行效率。除了合并两者,本库还以网页为单位封装了常用功能,提供非常简便的操作和语句,使用户可减少考虑细节,专注功能实现。以简单的方式实现强大的功能,使代码更优雅。

以前的版本是对 selenium 进行重新封装实现的。从 3.0 开始,作者另起炉灶,对底层进行了重新开发,摆脱对 selenium 的依赖,增强了功能,提升了运行效率。

核心能力

本库采用全自研的内核,内置了 N 多实用功能,对常用功能作了整合和优化,对比 selenium,有以下优点:
  • 无 webdriver 特征

  • 无需为不同版本的浏览器下载不同的驱动

  • 运行速度更快

  • 可以跨 iframe 查找元素,无需切入切出

  • 把 iframe 看作普通元素,获取后可直接在其中查找元素,逻辑更清晰

  • 可以同时操作浏览器中的多个标签页,即使标签页为非激活状态,无需切换

  • 可以直接读取浏览器缓存来保存图片,无需用 GUI 点击另存

  • 可以对整个网页截图,包括视口外的部分(90以上版本浏览器支持)

  • 可处理非open状态的 shadow-root

入门演示

SessionPage对象和WebPage对象的 s 模式,可用收发数据包的形式访问网页。

顾名思义,SessionPage是一个使用使用Session(requests 库)对象的页面,它使用 POM 模式封装了网络连接和 html 解析功能,使收发数据包也可以像操作页面一样便利。

并且,由于加入了本库独创的查找元素方法,使数据的采集便利性远超 requests + beautifulsoup 等组合。

SessionPage是本库几种页面对象中最简单的,我们先从它开始入手。

我们看个简单的例子,来了解SessionPage的工作方式。

# 导入
from DrissionPage import SessionPage
# 创建页面对象
page = SessionPage()
# 访问网页
page.get('https://gitee.com/explore/all')
# 在页面中查找元素
items = page.eles('t:h3')
# 遍历元素
for item in items[:-1]:
    # 获取当前<h3>元素下的<a>元素
    lnk = item('tag:a')
    # 打印<a>元素文本和href属性
    print(lnk.text, lnk.link)
输入效果:

对比被访问页面官网。

相关推荐

  • 怒删180个服务器!39岁程序员被裁后实施报复,导致公司损失91.8万新币
  • 周鸿祎AI产品翻车事件始末,被群嘲后又惹上官司!被盗图者:我要的是公开道歉和1元RMB赔偿!
  • 他离开一年多了
  • 年费 12 万美元?在线赌场因 Cloudflare 涨价被迫停运
  • 《架构师》电子书下载:用过去的智慧引导 AI 变革
  • 服务调用延迟降低 10%-70%,字节跳动做了什么?
  • 中国软件行业被指“全军覆没”;微软 Copilot GPTs 宣布停服;苹果股价暴涨,“一夜飙升”1.56万亿!| Q资讯
  • 介绍一个 SpringBoot 集成各种场景的项目
  • 糊弄面试官系列:用最简洁的大白话把 Vue 原理讲清楚!!!
  • 7 个杀手级的 JS 一行代码
  • 如何利用 TypeScript 的判别联合类型提升错误处理与代码安全性
  • InnoDB 对 Buffer Pool 的奇思妙想
  • B站疯传!被严重低估的后端面试题库!
  • 大爆冷!17岁中专生吊打一众名校生!
  • 前腾讯员工:从北京回了老家,进了小厂,​跟之前在腾讯比,年包缩水了一大截,强度却跟腾讯差不多大
  • 同事月薪6800,端午节后上班就收拾东西,她说组长给领导反馈说,因为自己端午放假没接电话,把项目验收给耽误了!
  • 为什么你拿不到高薪?一定是犯了这6个错误:1、只顾着默默干活,2、不及时汇报工作进度,3、遇事不沟通硬抗,4、容易被上级情绪左右
  • 防止暴力破解,教你如何在登录失败后实施10分钟账户锁定策略!
  • 今日AI资讯-20240615
  • 3万字详细解析清华大学最新综述工作:大模型高效推理综述