selenium的新一代替代品---DrissionPage(very 推荐)

这篇具有很好参考价值的文章主要介绍了selenium的新一代替代品---DrissionPage(very 推荐)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

官方文档地址: http://g1879.gitee.io/drissionpagedocs/

✨️ 概述

DrissionPage 是一个基于 python 的网页自动化工具。

它既能控制浏览器,也能收发数据包,还能把两者合而为一。

可兼顾浏览器自动化的便利性和 requests 的高效率。

它功能强大,内置无数人性化设计和便捷功能。

它的语法简洁而优雅,代码量少,对新手友好。


项目地址:gitee | github

您的星星是对我最大的支持💖

交流 QQ 群: 897838127


最新版本:3.2.26

支持系统:Windows、Linux、Mac

python 版本:3.6 及以上

支持应用:Chromium 内核浏览器(如 Chrome、Edge),electron 应用


📕 背景

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

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

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


💡 理念

简洁!易用 !方便!


☀️ 特性

作者经过长期实践,踩过无数坑,总结出的经验全写到这个库里了。

🎇 强大的自研内核

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

  • 无 webdriver 特征
  • 无需为不同版本的浏览器下载不同的驱动
  • 运行速度更快
  • 可以跨 iframe 查找元素,无需切入切出
  • 把 iframe 看作普通元素,获取后可直接在其中查找元素,逻辑更清晰
  • 可以同时操作浏览器中的多个标签页,即使标签页为非激活状态,无需切换
  • 可以直接读取浏览器缓存来保存图片,无需用 GUI 点击另存
  • 可以对整个网页截图,包括视口外的部分(90以上版本浏览器支持)
  • 可处理非open状态的 shadow-root

🎇 亮点功能

除了以上优点,本库还内置了无数人性化设计。

  • 极简的语法规则。集成大量常用功能,代码更优雅
  • 定位元素更加容易,功能更强大稳定
  • 无处不在的等待和自动重试功能。使不稳定的网络变得易于控制,程序更稳定,编写更省心
  • 提供强大的下载工具。操作浏览器时也能享受快捷可靠的下载功能
  • 允许反复使用已经打开的浏览器。无须每次运行从头启动浏览器,调试超方便
  • 使用 ini 文件保存常用配置,自动调用,提供便捷的设置,远离繁杂的配置项
  • 内置 lxml 作为解析引擎,解析速度成几个数量级提升
  • 使用 POM 模式封装,可直接用于测试,便于扩展
  • 高度集成的便利功能,从每个细节中体现
  • 还有很多细节,这里不一一列举,欢迎实际使用中体验:D

应用实例 : 🌠 采集猫眼电影 TOP100 榜

这个示例演示用浏览器采集数据。

✅️️ 采集目标
目标网址:https://www.maoyan.com/board/4

采集目标:排名、电影名称、演员、上映时间、分数

✅️️ 编码思路
按F12,可以看到每个电影信息都包含在

元素中,因此可批量获取
元素,遍历它们并再从其中获取每个电影的信息。

✅️️ 示例代码
以下代码可直接运行。

须要注意的是,这里用到记录器对象,详见DataRecorder。

from DrissionPage import ChromiumPage
from DataRecorder import Recorder

# 创建页面对象

page = ChromiumPage()

# 创建记录器对象

recorder = Recorder('data.csv')

# 访问网页

page.get('https://www.maoyan.com/board/4')

while True:

    # 遍历页面上所有 dd 元素

    for mov in page.eles('t:dd'):

        # 获取须要的信息

        num = mov('t:i').text
        score = mov('.score').text
        title = mov('@data-act=boarditem-click').attr('title')
        star = mov('.star').text
        time = mov('.releasetime').text

        # 写入到记录器

        recorder.add_data((num, title, star, time, score))

    # 获取下一页按钮,有就点击
    btn = page('下一页', timeout=2)
    if btn:
        btn.click()
        page.wait.load_start()
    # 没有则退出程序
    else:
        break
recorder.record()

✅️️ 结果
程序生成一个结果文件 data.csv,内容如下:文章来源地址https://www.toymoban.com/news/detail-677214.html

1,我不是药神,"主演:徐峥,周一围,王传君",上映时间:2018-07-05,9.6
2,肖申克的救赎,"主演:蒂姆·罗宾斯,摩根·弗里曼,鲍勃·冈顿",上映时间:1994-09-10(加拿大),9.5
3,海上钢琴师,"主演:蒂姆·罗斯,比尔·努恩 ,克兰伦斯·威廉姆斯三世",上映时间:2019-11-15,9.3
4,绿皮书,"主演:维果·莫腾森,马赫沙拉·阿里,琳达·卡德里尼",上映时间:2019-03-01,9.5
5,霸王别姬,"主演:张国荣,张丰毅,巩俐",上映时间:1993-07-26,9.4

下面省略。。。

到了这里,关于selenium的新一代替代品---DrissionPage(very 推荐)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Notion 开源替代品 AFFINE 部署和使用教程

    AFFiNE 是一款完全开源的 Notion + Miro 替代品,与 Notion 相比,AFFiNE 更注重隐私安全,优先将笔记内容保存到本地。 GitHub 地址:https://github.com/toeverything/AFFiNE AFFiNE 使用 Rust 和 Typescript 构建,只需要一个命令即可运行整个项目,AFFiNE 以最简单的方式给了所有开发者最大的想象力

    2024年04月09日
    浏览(33)
  • 了解一下 Fossil,一个 Git 的替代品 | Linux 中国

    Fossil 是一个集版本控制系统、bug 追踪、维基、论坛以及文档解决方案于一体的系统。 正如任何程序员都知道的,有很多原因说明跟踪代码更改是至关重要的。有时候你只是想知道你的项目是如何开始和发展的历史,这是出于好奇或教育的原因。其他时候,您希望允许其他编

    2024年02月14日
    浏览(30)
  • AI程序员Devin的开源替代品-Devika

    Devika是一名高级人工智能软件工程师,可以理解人类的高级指令,将它们分解成步骤,研究相关信息,并编写代码来实现给定的目标。Devika利用大型语言模型、规划和推理算法以及网页浏览能力来智能地开发软件。 Devika的目标是通过提供一个人工智能结对程序员来彻底改变我

    2024年04月28日
    浏览(25)
  • ClickHouse Keeper: 一个用 C++ 编写的 ZooKeeper 替代品

    。 本文字数:9915;估计阅读时间:25 分钟 审校:庄晓东(魏庄) 本文在公众号【ClickHouseInc】首发 ClickHouse 是用于实时应用和分析的最快且资源利用率最高的开源数据库。ClickHouse Keeper 是 ClickHouse 的一个组件,是 ZooKeeper 的快速、更节省资源和功能丰富的替代品。这个开源

    2024年02月05日
    浏览(23)
  • Centos停止维护以后Rocky Linux是最好的替代品

    公众号: MCNU云原生 ,欢迎微信搜索关注,更多干货,及时掌握! 目录 一、Centos Stream不可取 二、Rocky Linux是最好的生产应用替代品 三、个人学习的选择 1、Centos 7/Centos 8 2、Rocky Linux 3、Mint 4、Debian 5、Ubuntu 2020年12月08日,CentOS官方宣布了停止维护CentOS Linux的计划,并推出了

    2024年02月05日
    浏览(42)
  • x-cmd pkg | tsx - Node.js 的直接替代品

    tsx 代表 “TypeScript execute”,由 TypeScript 编写,内部使用由 Go 语言编写的 esbuild 核心二进制实现超快的 TypeScript 编译,旨在增强 Node.js 以无缝运行 TypeScript / ESM / CJS module 编写的脚本文件,成为 node 命令的直接替代品。 使用 x env use tsx 即可自动下载并使用 在终端运行 eval \\\"$(

    2024年01月22日
    浏览(40)
  • x-cmd pkg | sd - sed 命令的现代化替代品

    sd 是一个基于正则表达式的搜索和替换文本的命令行工具,类似于 sed,但 sd 使用更简单,对用户更为友好。 使用 x sd 即可自动下载并使用 在终端运行 eval \\\"$(curl https://get.x-cmd.com)\\\" 即可完成 x 命令安装, 详情参考 x-cmd 官网 x-cmd 提供1分钟教程,其中包含了 sd 命令常用功能的

    2024年01月16日
    浏览(47)
  • CentOS Linux的替代品(六)_BigCloud Enterprise Linux R8 U2 基础安装教程

    BC-Linux借助中国移动应用产业链及上下游发展优势 ,开展常态化生态认证,全面兼容飞腾、鲲鹏、海光、龙芯、兆芯、申威6大国产芯片,与国内主流服务器、中间件、数据库、安全组件等厂商互认证,已完成百款软硬件产品的适配,可以应用于业务全场景,打造更安全、更广

    2024年02月12日
    浏览(24)
  • 微软应用商店Microsoft Store错误代码: 0xC002001B官方解决方法和Windows计算器替代品Qalculate

    Windows10计算器软件不能使用,本想通过Microsoft Store重新安装一下,结果微软应用商店Microsoft Store显示错误代码: 如图所示 0xC002001B 原文链接点击跳转 下载地址 Qalculate功能更强大好用

    2024年02月12日
    浏览(43)
  • 1.5 新一代信息技术

    战略性新兴产业是以重大技术突破和重大发展需求为基础,对经济社会全局和长远发展具有重大引领带动作用,知识技术密集、物质资源消耗少、成长潜力大、综合效益好的产业。 依据《国务院关于加快培育和发展战略性新兴产业的决定》(国发(2010) 32号),七个战略性新兴产

    2023年04月08日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包