19爬虫:使用playwright登录超级鹰
本次案例一共解决了如下两个问题:
(1)如何使用playwright截图,特别是验证码图片
(2)在playwright中如何判断一个元素可见
1.截图
我们首先解决第一个问题,截图。如果前期接触过selenium的小伙伴应该不难接受使用playwright截图。
在playwright中,截图分为三种情况:整页截图,捕获到缓冲区,元素截图。
整页截图就是捕获屏幕截图并将其保存到文件中,对应的方法为page.screenshot(path=文件保存的路径以及文件名称),page.screenshot(path='screenshot.png')表示整屏幕截图并将截图命名为screenshot.png,保存在当前程序所在的目录下。
捕获到缓冲区具体是什么意思本人并不清楚,如果有知道的小伙伴麻烦留言,非常的感谢。
元素截图相当于我们常用的区域截图,一般我们可以截取验证码或者滑块所在的图片,对应的方法为page.locator(元素定位表达式).screenshot({ path: 文件保存的路径以及文件名称 })也可以是page.locator(元素定位表达式).screenshot( path=文件保存的路径以及文件名称 ),例如page.locator('xpath=//form/div/img').screenshot(path='screenshot.png')表示定位验证码图片然后进行截图。
2.在playwright中判断一个元素可见
破解验证码,在一定程度上程序可能识别错误。如果输入账号、密码、验证码,网页登录不上,一般会有相应的提示信息,比如账号错误、密码错误、验证码输入错误等提示信息,我们通过定位这些信息是否在网页上可见就可以断言登录是否成功。
判断网页上的某个元素是否可见可以使用is_visible()方法。具体的使用方法为:page.locator(元素定位表达式).is_visible()
3.完整程序代码
'''playwright如何下载验证码图片主要学习一下如何使用playwright截图'''from playwright.sync_api import sync_playwright
import ddddocrdef handle_code():'''该函数用于破解验证码'''with open('screenshot.png', 'rb') as f:ocr = ddddocr.DdddOcr(show_ad=False)code = ocr.classification(f.read())# code 的类型时字符串样式return codewith sync_playwright() as p:browser = p.chromium.launch(headless=False)context = browser.new_context()page = context.new_page()page.goto('https://www.chaojiying.com/user/login/')page.locator('xpath=/html/body/div[3]/div/div[3]/div[1]/form/div/img').screenshot(path='screenshot.png')# with open('screenshot.png', 'rb') as f:# ocr = ddddocr.DdddOcr(show_ad=False)# code = ocr.classification(f.read())# print(code,type(code))page.locator('xpath=/html/body/div[3]/div/div[3]/div[1]/form/p[1]/input').type('账号',delay=1000)page.locator('xpath=/html/body/div[3]/div/div[3]/div[1]/form/p[2]/input').type('密码',delay=1000)page.locator('xpath=/html/body/div[3]/div/div[3]/div[1]/form/p[3]/input').type(handle_code(),delay=1000)page.locator('xpath=/html/body/div[3]/div/div[3]/div[1]/form/p[4]/input').click()# 如果登录不成功,使用while循环破解验证码,输入验证码,判断“验证码”错误字样是否在网页上出现flag = page.locator('xpath=/html/body/div[3]/div/div[1]/span/font').is_visible() # 验证码错误字样是否出现,如果flag为真则登录失败while flag:print('验证失败,重新验证')page.locator('xpath=/html/body/div[3]/div/div[3]/div[1]/form/div/img').screenshot(path='screenshot.png')page.locator('xpath=/html/body/div[3]/div/div[3]/div[1]/form/p[3]/input').type(handle_code(),delay=1000)page.locator('xpath=/html/body/div[3]/div/div[3]/div[1]/form/p[4]/input').click()flag = page.locator('xpath=/html/body/div[3]/div/div[1]/span/font').is_visible()print('登录成功')page.wait_for_timeout(1000)page.close()context.close()browser.close()
相关文章:
19爬虫:使用playwright登录超级鹰
本次案例一共解决了如下两个问题: (1)如何使用playwright截图,特别是验证码图片 (2)在playwright中如何判断一个元素可见 1.截图 我们首先解决第一个问题,截图。如果前期接触过selenium的小伙…...
[转]Java面试近一个月的面试总结
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/46753275 前言 打算换个工作,近一个月面试了不少的公司,下面将一些面试经验和思考分享给大家。另外校招也快要开始了,为…...
Spring Boot中使用MockMvc测试PATCH请求控制器
在Spring Boot项目中,对控制器进行单元测试是确保代码质量和功能正确性的重要环节。本文将通过一个具体的例子,展示如何使用Spring的MockMvc框架来测试处理PATCH请求的控制器。 示例项目结构 假设我们有一个简单的Spring Boot项目,其中包含一…...
html转PDF文件最完美的方案(wkhtmltopdf)
目录 需求 一、方案调研 二、wkhtmltopdf使用 如何使用 文档简要说明 三、后端服务 四、前端服务 往期回顾 需求 最近在做报表类的统计项目,其中有很多指标需要汇总,网页内容有大量的echart图表,做成一个网页去浏览,同时…...
ip地址是手机号地址还是手机地址
在数字化生活的浪潮中,IP地址、手机号和手机地址这三个概念如影随形,它们各自承载着网络世界的独特功能,却又因名称和功能的相似性而时常被混淆。尤其是“IP地址”这一术语,经常被错误地与手机号地址或手机地址划上等号。本文旨在…...
【大数据技术】搭建完全分布式高可用大数据集群(Hadoop+MapReduce+Yarn)
搭建完全分布式高可用大数据集群(Hadoop+MapReduce+Yarn) jdk-8u361-linux-x64.tarhadoop-3.3.6.tar.gz注:请在阅读本篇文章前,将以上资源下载下来。 写在前面 本文主要介绍搭建完全分布式高可用集群Hadoop+MapReduce+Yarn的详细步骤。 注意: 统一约定将软件安装包存放…...
从零开始:OpenCV 图像处理快速入门教程
文章大纲 第1章 OpenCV 概述 1.1 OpenCV的模块与功能 1.2 OpenCV的发展 1.3 OpenCV的应用 第2章 基本数据类型 2.1 cv::Vec类 2.2 cv::Point类 2.3 cv::Rng类 2.4 cv::Size类 2.5 cv:&…...
springboot简单应用
快速开发Springboot项目实现简单的增删改查,前期需要准备:idea与postman安装 Maven,MySQL(8),JDK(21) 目录 前言 springboot 使用3.0版本,JDK使用21,MySQL使用8版本 开发环境IDEA使用2024版本 …...
【DeepSeek】DeepSeek小模型蒸馏与本地部署深度解析DeepSeek小模型蒸馏与本地部署深度解析
一、引言与背景 在人工智能领域,大型语言模型(LLM)如DeepSeek以其卓越的自然语言理解和生成能力,推动了众多应用场景的发展。然而,大型模型的高昂计算和存储成本,以及潜在的数据隐私风险,限制了…...
C#项目引用VB.NET 类库项目,生成一个EXE,这是什么原理
C#项目引用VB.NET 类库项目,生成一个EXE,这是什么原理 在C#项目中引用VB.NET类库项目并生成一个EXE文件,主要基于.NET框架的通用性以及编译原理。以下是详细的原理分析: 1. .NET框架的通用性 公共语言运行时(CLR&…...
qt使用MQTT协议连接阿里云demo
qt使用Mqtt协议连接阿里云。 在配置好qt关于MQTT的环境之后,主要就是根据MQTT的连接参数进行连接即可。 环境配置推荐链接QT编译并部署QtMqtt相关环境跑测demo【超详细教程】_mqtt qt开发教程-CSDN博客 连接核心代码,主要就是根据阿里云的MQTT相关参数进行配置实现连…...
HTML中的图片标签详解及路径使用【学术投稿-第五届环境资源与能源工程国际学术会议(ICEREE 2025)】
官网:www.iceree.org 会议时间:2025年2月21-23日 会议地点:中国-昆明 简介 第五届环境资源与能源工程国际学术会议(ICEREE 2025)将于2025年2月21日至23日在中国昆明隆重举行。主要围绕“能源工程和能源技术”、“环…...
【低功耗 Power 学习专栏 -- Power domian 和 power rail】
文章目录 power rail(followpin) 和 Power domain1. Power Domain2. Power Rail3. Followpin4. Power Stripe5. IR Drop芯片中电源管理设计 举例 power rail(followpin) 和 Power domain followpin 指两部分,一个就是 STD cell 上下的 VDD, VSS。同时,f…...
PythonStyle MVC 开发框架
在 Python 中,MVC(Model - View - Controller,模型 - 视图 - 控制器)是一种常见的软件设计模式,它将应用程序分为三个主要部分,各自承担不同的职责,以提高代码的可维护性、可扩展性和可测试性。…...
RTOS基础(TODO)
(TODO) 读完FreeRTOS内核源码,需要多久? 有哪些情况下是RTOS满足不了需求,必须得上嵌入式Linux系统的? 如何用树莓派 Pico 学习 RTOS? 树莓派 Pico 使用 RP2040 微控制器,基于 AR…...
八、Spring Boot 日志详解
目录 一、日志的用途 二、日志使用 2.1 打印日志 2.1.1 在程序中获取日志对象 2.1.2 使用日志对象打印日志 2.2、日志框架介绍 2.2.1 门面模式(外观模式) 2.2.2 门面模式的实现 2.2.3 SLF4J 框架介绍 2.3 日志格式的说明 2.4 日志级别 2.4.1 日志级别的分类 2.4.2…...
Java实战经验分享
1. 项目优化与性能提升 面试问题: 聊聊你印象最深刻的项目,或者做了哪些优化 你在项目中如何解决缓存穿透问题? 缓存穿透是我们做缓存优化时最常遇到的问题,特别是当查询的对象在数据库中不存在时,缓存层和数据库都会…...
前端控制器模式
前端控制器模式 概述 前端控制器模式(Front Controller Pattern)是一种设计模式,它将应用程序中的所有用户请求统一交由一个控制器处理。这种模式在MVC(Model-View-Controller)架构中尤为常见,它能够简化…...
Linux之安装docker
一、检查版本和内核是否合格 Docker支持64位版本的CentOS 7和CentOS 8及更高版本,它要求Linux内核版本不低于3.10。 检查版本 cat /etc/redhat-release检查内核 uname -r二、Docker的安装 1、自动安装 Docker官方和国内daocloud都提供了一键安装的脚本&#x…...
BUUCTF_XSS-Lab
xss XSS(Cross - Site Scripting)即跨站脚本攻击,是一种常见的 Web 安全漏洞。攻击者通过在目标网站注入恶意脚本(通常是 JavaScript),当其他用户访问该网站时,这些恶意脚本会在用户的浏览器中执…...
从手动压枪到智能辅助:探索罗技鼠标宏在PUBG中的进化之路
从手动压枪到智能辅助:探索罗技鼠标宏在PUBG中的进化之路 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 当你在绝地求生的激烈对枪中…...
如何让foobar2000界面脱胎换骨?3大设计理念打造个性化音乐体验
如何让foobar2000界面脱胎换骨?3大设计理念打造个性化音乐体验 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn 副标题:从安装到定制:零基础也能掌握的foobox-cn美化…...
新手福音:用快马平台将vmware官网概念转化为可交互的虚拟机演示代码
作为一名刚接触虚拟化技术的新手,我最近在VMware官网上看到了关于虚拟机的基础概念介绍。虽然理论知识很全面,但总觉得少了点动手实践的环节。直到发现了InsCode(快马)平台,它让我能够把抽象的概念快速转化为可运行的代码,这种学习…...
Layerdivider:零基础上手图像分层工具的完整指南
Layerdivider:零基础上手图像分层工具的完整指南 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 为什么自动分层总是不尽如人意?设…...
别再只测烟雾了!用STM32CubeMX+MQ-2传感器,做个厨房燃气泄漏+烟雾双检测器(附完整代码)
厨房安全卫士:基于STM32CubeMX与MQ-2的燃气烟雾双模检测系统 厨房是家庭安全事故的高发区域,燃气泄漏和烟雾积聚都可能引发严重后果。传统烟雾报警器功能单一,而市面上的复合型安防设备价格昂贵。本文将带你用STM32单片机和MQ-2气敏传感器&am…...
3分钟搭建免费B站视频解析服务:零基础教程
3分钟搭建免费B站视频解析服务:零基础教程 【免费下载链接】bilibili-parse bilibili Video API 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse 你是否曾经想要保存B站的精彩视频却不知道如何操作?或者需要在自己的网站上嵌入B站视…...
使用圣女司幼幽-造相Z-Turbo为MATLAB科学计算可视化生成示意图
使用圣女司幼幽-造相Z-Turbo为MATLAB科学计算可视化生成示意图 如果你用MATLAB做科研或者工程计算,肯定遇到过这样的烦恼:辛辛苦苦算出来的数据,最后要画图放进论文或者报告里时,总觉得那些图表有点“干巴巴”的,不够…...
FUTURE POLICE语音模型重装系统后快速恢复部署指南
FUTURE POLICE语音模型重装系统后快速恢复部署指南 重装系统这事儿,对开发者来说,有时候就跟电脑的“大扫除”一样,图个干净利落。但扫除完,看着空空如也的桌面和命令行,要重新把那些吃饭的家伙——比如你正在跑的FUT…...
[Python3高阶编程] - 异步编程深度学习指南一: 基础知识( 源代码)
异步编程深度学习指南 原文: https://blog.csdn.net/andylin02/article/details/159649164?spm1001.2014.3001.5502 #!/home/admin/.pyenv/versions/3.9.12/bin/python # -*- coding: utf-8 -*-o import aiohttp import asyncio from asyncio import Semaphoreasync def fetc…...
ngx_http_join_exact_locations
1 定义 ngx_http_join_exact_locations 函数 定义在 ./nginx-1.24.0/src/http/ngx_http.cstatic ngx_int_t ngx_http_join_exact_locations(ngx_conf_t *cf, ngx_queue_t *locations) {ngx_queue_t *q, *x;ngx_http_location_queue_t *lq, *lx;q ngx_queue_he…...
