python 比webdriver更好用的ChromiumPage

news2024/11/16 20:38:40

优点(目前发现的):

  1. 不用配合selenium
  2. 不用下载对应浏览器的webdriver,不用对应浏览器版本
  3. 不用设置webdriver路径之类的设置
  4. 目前没看到有出现像webdriver类似的浏览器被控制的提示,使用过程中好像也没被检测出来。
  5. 每次不会重新打开一个浏览器,不会关闭。
  6. 控制滚动条更方便,不用像webdriver写js去执行,效果还不好。
  7. 可以监控网络请求,比webdriver方便多了。

chromiumPage介绍:

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

  • 支持系统:Windows、Linux、Mac;
  • python 版本:3.6 及以上;
  • 支持应用:Chromium 内核浏览器(如 Chrome、Edge),electron 应用;

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

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

ChromiumPage 依赖

安装 drissionPage

pip3 install drissionPage

ChromiumPage windows报错

刚开始执行的时候,直接报错:

for filename in filenames:
TypeError: 'WindowsPath' object is not iterable

百度、Google无果。

最后自己调试解决的。

报错:

解决:

打开报错的类,编辑代码。

思路,看代码是循环的时候出现报错,filenames对象是一个WindowsPath类型。循环的时候报错。看代码是循环文件,便在前面加了一个类型判断。

ChromiumPage 使用

以下为一个小示例

        from DrissionPage import ChromiumPage
        driver = ChromiumPage()
# 监听指定的url
        driver.listen.start('aweme/v1/web/comment/list/')
# 访问链接
        driver.get('https://www.douyin.com/video/7382814024410336552')


#滚动滚动条到底部,获取监听结果
        for page in range(3):
            print(f'正在采集第{page + 1}页的数据内容')
            driver.scroll.to_bottom()
            resp = driver.listen.wait()
            json_data = resp.response.body
# 保存文件(可以注释)
            save_comments_to_csv(json_data.get('comments', []), csv_writer)

# 获取元素
        moreButton = driver.eles("tag:button@class=jlqd8usT comment-reply-expand-btn")
        # moreButton = driver.eles("tag:button@class=bgz8RRCZ")
# 增加新的监听
        driver.listen.start('aweme/v1/web/comment/list/reply/')
        for more in moreButton:
# 执行元素动作
            more.click()
# 等待结果
            resp = driver.listen.wait()
# 获取结果
            json_data = resp.response.body
            print(json_data)

参考链接:

元素定位&操作

自动化测试框架:DrissionPage_chromiumpage-CSDN博客x

相关使用

爬虫基础之自动化工具 DrissionPage 的使用_浏览器_功能_httpsg

更多使用

一个神奇的自动化爬虫利器 - DrissionPagae_drissionpage设置代理-CSDN博客

https://www.drissionpage.cn/ChromiumPage/screen/ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1892193.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA实现二分查找,斐波那契数列,深度优先搜索详情教程【包含代码】

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

《企业实战分享 · 内存溢出分析》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 近期刚转战 CSDN,会严格把控文章质量,绝不滥竽充数,如需交流&#xff…

计算机系统中---信息就是位+上下文

hello.c #include <stdio.h>int main(){printf("hello,world\n");return 0; }hello程序的生命周期是从一个源程序(或者说源文件)开始的&#xff0c;即程序员通过编辑器创建并保存的文本文件&#xff0c;文件名是he11o.c。源程序实际上就是一个由值0和1组成的位…

推荐三款常用接口测试工具!

接口测试是软件开发中至关重要的一环&#xff0c;通过对应用程序接口进行测试&#xff0c;可以验证其功能、性能和稳定性。随着互联网和移动应用的快速发展&#xff0c;接口测试变得越来越重要。为了提高测试效率和质量&#xff0c;开发人员和测试人员需要使用专业的接口测试工…

复分析——第8章——共形映射(E.M. Stein R. Shakarchi)

第8章 共形映射(Conformal Mappings) The results I found for polygons can be extended under very general assumptions. I have undertaken this research because it is a step towards a deeper understanding of the mapping problem, for which not much has hap…

开放式耳机哪个牌子好?2024热门硬核机型推荐,不做冤大头

很多小伙伴私信我&#xff0c;想要挑选一款开放式耳机真的好难啊&#xff0c;现在开放式耳机市场的产品越来越多&#xff0c;知名的品牌和一些新兴的网红品牌哪一个最好&#xff1f;所以这篇文章&#xff0c;作为开放式耳机测评师&#xff0c;教大家如何挑选一款开放式耳机&…

工作助手VB开发笔记(1)

1.思路 1.1 样式 样式为常驻前台的一个小窗口&#xff0c;小窗口上有三到四个按钮&#xff0c;为一级功能&#xff0c;是当前工作内容的常用功能窗口&#xff0c;有十个二级窗口&#xff0c;为选中窗口时的扩展选项&#xff0c;有若干后台功能&#xff0c;可选中至前台 可最…

学生护眼台灯哪个牌子最好?几款口碑好、值得推荐的学生护眼台灯

家长们对孩子的用眼健康很重视&#xff0c;为什么&#xff1f;现在是科技电子时代&#xff0c;人们对电子屏幕的依赖性高&#xff0c;小孩子年纪小&#xff0c;眼部还处于正在发育的阶段&#xff0c;他们在学校中长时间的学习读写&#xff0c;用眼时间长。而且随着科技渗入教学…

36V高性能单双通道多路复用器开关控制器

产品简介 PC221 和 PC222 分别为单 8:1 和双通道 4:1 模拟多路复用器。由于特殊的设计优化&#xff0c;无论是上电状态还是掉电状态&#xff0c; PC221 和 PC222 都可以提供源端过压保护。正常供电状态下&#xff0c;多路复用器源端可以耐受持续的电压高达-50 V 至50 V。当掉电…

JS滚动时显示元素

本篇文章我们将实现文章平滑滑入 ● 其实这原本是用CSS实现的 .section {padding: 15rem 3rem;border-top: 1px solid #ddd;transition: transform 1s, opacity 1s; }.section--hidden {opacity: 0;transform: translateY(8rem); }● 我们的目的呢&#xff0c;就是当滚入到某一…

提升用户购物体验:多语言跨境电商系统源码优化技巧详解

随着全球化的发展&#xff0c;跨境电商已成为一种趋势。而在跨境电商中&#xff0c;多语言的支持是提升用户购物体验的重要一环。为此&#xff0c;本文将详细介绍多语言跨境电商系统源码的优化技巧。 一、多语言支持的重要性 在全球市场中&#xff0c;用户来自不同的国家和地…

日本服务器托管需要注意哪些问题

日本服务器托管是一项涉及多方面因素的重要决策&#xff0c;为了确保托管服务的稳定、高效与安全&#xff0c;企业或个人在托管过程中需要注意以下几个关键问题&#xff1a; 首先&#xff0c;数据中心的基础设施建设标准是决定托管稳定性的关键。这包括数据中心的建筑抗震、抗洪…

你的B端系统考虑移动化了?还没?那就小心out了。

B端系统移动化的趋势是不可阻挡的。随着移动设备的普及和移动互联网的发展&#xff0c;越来越多的企业和组织意识到移动化对于提高工作效率、拓展市场和提供更好的用户体验的重要性。以下是一些导致B端系统移动化趋势不可阻挡的原因&#xff1a; 移动办公需求&#xff1a;越来越…

Excel 宏录制与VBA编程 ——VBA编程技巧篇二 (合并内容相同连续单元格、取消合并单元格并在每个单元格中保留内容)

1、合并内容相同的连续单元格 如果需要合并如图所示的工作表中B列中部门相同的连续单元格 VBA代码&#xff1a; Sub Mergerng()Dim IntRow As IntegerDim i As IntegerApplication.DisplayAlerts FalseWith Sheet1IntRow .Range("A65536").End(xlUp).RowFor i In…

Activity 的生命周期

1.Activity生命周期基本概念 Activity生命周期指Activity从启动到销毁的过程&#xff0c;Activity表现为四种状态 活动状态&#xff1a; Activity在用户界面中处于最上层&#xff0c;完全能让用户看到&#xff0c;能够与用户进行交互。 暂停状态&#xff1a; Activity在界面…

项目中上传功能过段时间就报错,解决方案

实际项目中&#xff0c;发现过段时间上传功能就报错&#xff0c;报错如下&#xff1a; 排查问题&#xff1a; 在服务器的 /tmp目录下发现并没有 /tomcat目录&#xff0c;也就验证了上面找不到这个文件的报错 那么这个临时给tomcat的上传目录怎么就没有了呢&#xff1f; 其实临…

简单分享下python多态

目录&#xff1a; 一、多态是啥嘞&#xff08;龙生九子各有不同&#xff0c;这就是多态&#xff09; 二、基础的实例 三、多态的优势与应用场景 四、深入理解 一、多态是啥嘞&#xff08;龙生九子各有不同&#xff0c;这就是多态&#xff09; 多态&#xff08;Polymorphism&…

无人机森林火灾解决方案

森林火灾解决方案 森林火灾特点 森林火灾发生突然、蔓延迅速、难以控制&#xff0c;应对难度系 数很高&#xff0c;扑救工作十分困难 救援面临的挑战 • 林区交通不便&#xff0c; 山高坡陡&#xff0c; 沟壑纵横&#xff0c;难以及时侦查、 定位、扑灭 • 火灾发生的区域…

Unity休闲手机游戏开发课程

课程介绍 Unity休闲手机游戏开发课程将教您如何利用Unity游戏引擎创建令人愉快的休闲手机游戏。从基础的游戏开发知识到高级的游戏制作技巧&#xff0c;您将学习到创建各种类型的休闲游戏所需的关键技能和工具。无论您是初学者还是有一定经验的开发者&#xff0c;本课程都能帮助…

centos更换yum源、安装Docker和换源

所有操作都是在root权限下做的&#xff0c;切换root用户 命令&#xff1a;su root 使用ls /etc/yum*查看所有的关于yum的文件的路径 先安装wget 命令&#xff1a;yum install wget -y 命令&#xff1a;cd /etc/yum.repos.d进去&#xff0c;以便于操作 我们需要配置的是Cen…