关闭

这个Python库把Selenium按在地上摩擦

发表于:2024-8-06 09:33

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:大叶子    来源:知乎

  DrissionPage是一个基于 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)
  输入效果:
  对比被访问页面官网。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2024软件测试行业从业人员调查问卷》,您的见解,行业的声音!

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号