【Python】selenium获取鼠标在网页上的位置,并定位到网页位置模拟点击的方法

在使用Selenium写自动化爬虫时,遇到验证码是常事了。我在写爬取测试的时候,遇到了点击型的验证码,例如下图这种:
在这里插入图片描述这种看似很简单,但是它居然卡爬虫?用简单的点触验证码的方法来做也没法实现

在这里插入图片描述
平常的点触的方法:

btn = driver.find_element_by_css_selector('.botton_')
btn.click()

这种方法失败后, 我决定要使用模拟鼠标点击的方法,通过pyautogui库来实现。

pyautogui可以模拟鼠标的慢加速、快到按钮时减速、缓慢停止等行为,以模仿人类点击按钮的方式。

简单的代码是这样的:

import pyautogui
pyautogui.moveTo(x=100, y=100)
pyautogui.click()

需要实现的逻辑是:

  1. 将网页放大到最大,就像点F11,这一步为了第二步可以获得正确的位置
  2. 定位到点触验证码点在网页上的位置
  3. 鼠标移动到该位置,并点击
  4. 如果想把页面还原

为了找到验证码的位置,我的实现的方法是这样的:

from selenium import webdriver
import pyautogui
import time
driver = webdriver.Chrome(options=option)time.sleep(3)
driver.maximize_window()  # 最大化窗口
time.sleep(6)
current_position = pyautogui.position()
print(f"目标移动位置:X={xx}, Y={y}")
print(f"当前鼠标位置:X={current_position.x}, Y={current_position.y}")

这里是报出鼠标位置的方法,前提是在最大化窗口之后,我们把鼠标手动移动到目标的位置,例如:放在红色圈区域的位置在这里插入图片描述这就能print出,在最大化页面下(一定要让页面最大化),要点击区域的绝对x轴和y轴的长度了,这样就能定位到目标的地方了。在这里插入图片描述

driver.maximize_window()  # 最大化窗口
sleep(3)
x=931
y=664
#pyautogui.moveTo(x, y)
#点击上面的位置
#pyautogui.restore()  #调整会原来的大小
pyautogui.moveTo(x, y) #, duration=2, tween=pyautogui.linear
pyautogui.click()
sleep(3)#将页面缩小到成普通位置,以免占用电脑屏幕,这一步仅供参考
original_size = {'width': 800, 'height': 600}
driver.set_window_size(original_size['width'], original_size['height']) 
sleep(3)
driver.refresh()#刷新

如果直接通过css_selector或者xpath的元素来点击验证按钮,无法通过验证的话,可以模拟鼠标点击的方法,这样更像模拟人类的行为。

注意,这种方法也只能是在,验证码出现的在一定时间内的,完成点击才不会被视为爬虫,所以在点击的时候,最好不要耽误太多时间在测试上。

当然如果有代理服务器的情况下做可能会更好。

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

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

相关文章

十一、数据库的设计规范

文章目录 1. 为什么需要数据库设计2. 范式2.1 范式介绍2.2 范式都包括哪些2.3 键和相关属性的概念2.4 第一范式(1st NF)2.5 第二范式(2nd NF)2.6 第三范式(3rd NF)2.7 小结3. 反范式化3.1 概述3.2 应用举例3.3 反范式的新问题3.4 反范式的使用场景3.4.1 增加冗余字段的建议3.…

[Linux#65][TCP] 详解 延迟应答 | 捎带应答 | 流量控制 | 拥塞控制

目录 一、延迟应答 二、捎带应答 三. 流量控制 总结 四. 拥塞控制 1. 拥塞控制 2. 慢启动机制: 3.思考 4.拥塞避免算法 5. 快速恢复算法 一、延迟应答 1. 立即应答问题 接收数据的主机若立刻返回ACK应答,可能返回的窗口较小。例如&#xff1…

安装测试hasura

遗憾的是hasura 访问MySQL是收费的,访问PostgreSQL和MS SQL Server是免费的。 安装PG数据库 # 运行Hasura容器 docker run -d --name postgres-hasura -e POSTGRES_PASSWORDPassw0rd -e POSTGRES_DBhasura -p 5433:5432 postgres docker exec -it postgres-hasu…

TDC上YARN Web-UI 查看application日志方法

方法一 #通过浏览器访问tdc,访问的工作节点对于TDC都是外部节点。在提交给yarn任务后,YarnRM的Web UI 可以展示yarnnm上运行的application日志,但是由于跳转的svc地址,无法直接访问。 #在tdc界面上找到yarn实例,进入ya…

数据治理:制造企业转型的关键要素与战略需求

制造业,作为国民经济的主体,是立国之本、兴国之器、强国之基。从工业文明的曙光初现,到今日全球化的激烈竞争,始终昭示着一个真理:没有强大的制造业,就没有国家和民族的强盛。 为全面推进制造强国建设&…

Python精选200Tips:186-190

针对序列(时间、文本)数据的网络结构 续 P186-- 双向LSTM(Bidirectional Long Short-Term Memory 2005)(1)模型结构说明(2)创新性说明(3)示例代码:IMDB电影评论情感分析 …

污水排放口细粒度检测数据集,污-水排放口的类型包括10类目标,10000余张图像,yolo格式目标检测,9GB数据量。

污水排放口细粒度检测数据集,污-水排放口的类型包括10类目标(1 合流下水道,2 雨水,3 工业废水,4 农业排水,5 牲畜养殖,6 水产养殖,7 地表径流,8 废水处理厂&…

【cocos creator】输入框滑动条联动小组建

滑动条滑动输入框内容会改变 输入框输入,滑动条位置改变 const { ccclass, property } cc._decorator;ccclass() export default class SliderEnter extends cc.Component {property({ type: cc.Float, displayName: "最大值", tooltip: "" }…

ssm职业高中学情成绩系统设计+jsp

系统包含:源码论文 所用技术:SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习,获取源码请私聊我 需要定制请私聊 目 录 摘 要 I Abstract II 第一章 绪论 1 1.1 研究背景 1 1.2 研究意义 1 1.3 研究内容 2 第二章 开发环…

PE结构之绑定导入表

打印绑定导入表 //打印 绑定导入表 BOOL PrintBoundImport(__in char* m_fileName) {char* Filebuffer NULL;if (!GetFileBuffer(m_fileName, &Filebuffer)) return FALSE;PIMAGE_DOS_HEADER LPdosHeader NULL;PIMAGE_NT_HEADERS LPntHeader NULL;LPdosHeader (PIMAGE…

Qt基础对话框QDialog

模态显示对话框 调用exec方法可以使得对话框模态显示,但是一个阻塞函数 [virtual slot] int QDialog::exec() 对话框的三个槽函数 accept [virtual slot] void QDialog::accept(); reject [virtual slot] void QDialog::reject() done [virtual slot] void QDia…

鸢尾花书实践和知识记录[6-23数据聚类]

文章目录 思维导图数据聚类和引例基于图论的聚类算法算法流程1构造数据构造距离矩阵相似度相似度矩阵创建图 拉普拉斯矩阵标准拉普拉斯矩阵(Combinatorial Laplacian)归一化拉普拉斯矩阵 (Normalized Laplacian)无标度拉普拉斯矩阵 (Signless Laplacian)归一化对称拉普拉斯矩阵…

Vue深入了解

Vue深入了解 MVVMv-model (双向数据绑定原理)异步更新keep-alive原理$nextTick原理computed 和 watch 的区别css-scoped虚拟DOMVuex && PiniaVue-router原理proxy 与 Object.defineProperty组件通信方式 MVVM <!DOCTYPE html> <html lang"en">&…

怎么把一段音频的人声和背景音乐分开?

在数字音频处理中&#xff0c;将一段音频中的人声和背景音乐分开是一个复杂但又常见的需求。这种技术广泛应用于音乐制作、影视后期、广告制作等多个领域。本文将为你详细解析如何通过不同的方法实现这一目标&#xff0c;帮助你更好地掌握音频分离技术。 一、音频分离的基本概念…

关于C语⾔内存函数 memcpy memmove memset memcmp

memcpy使⽤和模拟实现 void * memcpy ( void * destination, const void * source, size_t num ); 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。 这个函数在遇到 \0 的时候并不会停下来。 如果source和destination有任何的重叠&am…

基于方块编码的图像压缩matlab仿真,带GUI界面

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 编码单元的表示 4.2编码单元的编码 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 下图是随着方块大小的变化&#xff0c;图像的压缩率以及对应的图像质量指标PSN…

本地生活服务项目入局方案解析!本地生活服务商系统能实现怎样的作业效果?

当前&#xff0c;各大平台的本地生活服务业务日渐兴盛&#xff0c;提高创业者入局意向的同时&#xff0c;也让本地生活服务项目有哪些等问题也成为了多个创业者社群中的热议对象。而从目前的讨论情况来看&#xff0c;在创业者们所询问的众多本地生活服务项目中&#xff0c;通过…

uniapp 游戏 - 使用 uniapp 实现的扫雷游戏

0. 思路 1. 效果图 2. 游戏规则 扫雷的规则很简单。盘面上有许多方格,方格中随机分布着一些雷。你的目标是避开雷,打开其他所有格子。一个非雷格中的数字表示其相邻 8 格子中的雷数,你可以利用这个信息推导出安全格和雷的位置。你可以用右键在你认为是雷的地方插旗(称为标…

安卓/iOS H5传递动态参数方法,App渠道归因方案

需求和痛点 负责渠道分发的部门都需要收集区分不同安装渠道的转化量&#xff08;注册、付费等数据&#xff09;做数据分析&#xff0c;通常包括官网跳转、KOL营销、用户分享、广告投放、活动拉新等多个渠道。 场景 用户在网页上进行用户行为&#xff0c;产生了数据&#xff0c…

Vue 项目文件大小优化

优化逻辑 任何优化需求&#xff0c;都有一个前提&#xff0c;即可衡量。 那 Vue 加载速度的优化需求&#xff0c;本质上是要降低加载静态资源的大小。 所以&#xff0c;优化前&#xff0c;需要有一个了解项目现状的资源加载大小情况。 主要分 3 步走&#xff1a; 找到方法测…