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

news2024/11/24 1:08:26

在使用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.coloradmin.cn/o/2209312.html

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

相关文章

数据迁移:如何保证在不停机的情况下平滑的迁移数据

1. 引言 数据迁移是一个常见的需求,比如以下的场景,我们都需要进行数据迁移。 大表修改表结构单表拆分进行分库分表、扩容系统重构,使用新的表结构来存储数据 2. 迁移准备 2.1 备份工具 2.1.1 mysqldump mysqldump 是 MySQL 自带的用于…

【计网】从零开始认识https协议 --- 保证安全的网络通信

在每个死胡同的尽头, 都有另一个维度的天空, 在无路可走时迫使你腾空而起, 那就是奇迹。 --- 廖一梅 --- 从零开始认识https协议 1 什么是https协议2 https通信方案2.1 只使用对称加密2.2 只使用非对称加密2.3 双方都使用非对称加密2.4 …

Winform和WPF的技术对比

WinForms(Windows Forms)和WPF(Windows Presentation Foundation)是用于创建桌面应用程序的两种技术。尽管两者都可以用于开发功能强大的Windows应用程序,但它们的设计理念、功能和开发体验都有显著区别。在本文中&…

(亲测可行)ubuntu下载安装c++版opencv4.7.0和4.5.0 安装opencv4.5.0报错及解决方法

文章目录 🌕系统配置🌕打开终端,退出anacoda激活环境(如果有的话)🌕安装依赖🌙安装g, cmake, make, wget, unzip,若已安装,此步跳过🌙安装opencv依赖的库🌙安装可选依赖 …

Smartfusion2开发环境的搭建

Libero软件安装包括libero安装、bibero补丁安装、bibero的license添加和官方ip库的添加等4部分内容组成。具体内容如下所示: 1 Libero软件安装 1、解压LiberoSoC_v11.8的安装包到当前目录,然后运行Libero中的可执行软件进行安装; 图1 双击l…

Javascript实现Punycode编码/解码

Punycode编码/解码的Javascript实现。 用法 const punycode require(punycode); console.log(punycode.encode(用法)); //nwwn1p console.log(punycode.decode(nwwn1p)) //用法console.log(punycode.toIDN(用法.中国)); //xn--nwwn1p.xn--fiqs8s console.log(punycode.fromI…

【AAOS】Android Automotive 13模拟器源码下载及编译

源码下载 repo init -u https://android.googlesource.com/platform/manifest -b android-13.0.0_r69 repo sync -c --no-tags --no-clone-bundle 源码编译 source build/envsetup.sh lunch sdk_car_x86_64-userdebug make -j8 运行效果 emualtor HomeMapAll appsSettings…

CUDA-X

NVIDIA CUDA-X 文章目录 前言一、CUDA-X 微服务CUDA-X 微服务CUDA-X 库二、CUDA-X 数据处理三、CUDA-X AI四、CUDA-X HPC总结前言 适用于 AI 的采用 GPU 加速的微服务和库。 释放 GPU 在 AI 应用程序中的潜能 探索 NVIDIA CUDA-X AI 正在推动变革的 AI 领域和可在其中使用的 G…

win10 解决Qt编译得到的可执行文件 *.exe 无法启动的问题

问题描述 在Qt 5.12.4 写了一个服务端程序,编译可以通过,但是打开debug目录下的可执行文件,就报以下错误: 解决方案 方法一 复制缺失的dll到TCPServer.exe目录下 方法二 可能是系统环境变量没有配好 将你电脑上的Qt安装目录…

linux入门——“权限”

linux中有权限的概念,最常见的就是安装一些命令的时候需要输入sudo来提权,那么为什么要有这个东西呢? linux是一个多用户操作系统,很多东西看起来是有很多分,但是实际的存储只有一份(比如命令,不…

网站在对抗机器人攻击的斗争中失败了

95% 的高级机器人攻击都未被发现,这一发现表明当前的检测和缓解策略存在缺陷。 这表明,虽然一些组织可能拥有基本的防御能力,但他们没有足够的能力应对更复杂的攻击。 例如利用人工智能和机器学习来模仿人类行为的攻击。 这些统计数据强调…

数据结构之顺序表详解:从原理到C语言实现

引言 在上一篇文章中我们讲到了时间复杂度与空间复杂度,今天我们接着讲数据结构中的内容。 数据的存储和组织方式决定了程序的效率。而顺序表,也就是大家熟悉的数组,正是我们编程中的“起步工具”。它简单易懂,却能帮你解决许多…

python利用电脑默认打开方式打开文件,视频,图片

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文整理python利用os库打开本地文件的方法。 这个确实比较简单。 利用os库的 os.startfile("mp4") 函数即可用系统默认打开方式打开文件。 这里打开视频进行测试。 import os os.startfile("…

linux 虚拟环境下源码安装DeepSpeed

第一步:创建虚拟环境: conda create -n deepspeed python3.10 第二步:进入虚拟环境,安装Pytorch 2.3.1 # CUDA 12.1 conda install pytorch2.3.1 torchvision0.18.1 torchaudio2.3.1 pytorch-cuda12.1 -c pytorch -c nvidia 第…

谷粒商城(学习笔记)

配置刷新的注解 数据表中不存在的数据 gateway路径重写 CORS跨域 调整路由顺序: TODO是什么:备忘录 逻辑删除 axios有请求缓存: 请求的模版! 删除成功后,重新获取数据! 删除成功之后,还有提示消息 删除成功…

八大排序--08快速排序

现有 arr {4,8,9,2,7}数组,请用快速排序的方式实现从小到大排序: 方法: 1.定义待排序数组中的第一个值为基准数; 2.定义j游标,从后向前移动找到第一个比基准数小的值停下; 3.定义i游标,从后向…

自定义注解和组件扫描在Spring Boot中动态注册Bean(一)

​ 博客主页: 南来_北往 系列专栏:Spring Boot实战 在Spring Boot中,自定义注解和组件扫描是两种强大的机制,它们允许开发者以声明性的方式动态注册Bean。这种方式不仅提高了代码的可读性和可维护性,还使得Spring Boot应用的…

区域识别——基于python语言

目录 目录 1.水域识别 2.模型介绍 3.文件框架 4.代码示例 4.1 data_preprocess.py 4.2 model1.0.py 4.3 train2.0.py 4.4 predict.py 4.5 运行结果 5.总结 1.水域识别 人眼看见河道可以直接分辨出这是河道,但是如何让计算机也能识别出这是河道呢&#x…

无序中的秩序:Transformer模型的创新性结构解析

最近我在看论文时,发现很多都在用 Transformer 模型,我知道transformer很有名,但是我也只是听说过他的大名,不知道他具体是做什么怎么做的,因此我决定深入了解一下,并做个简单记录,方便以后参考…

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

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