Selenium自动填写验证码(偏小白版本OCR)

2024-04-13 10:28

本文主要是介绍Selenium自动填写验证码(偏小白版本OCR),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

OCR基础示例

我直接

上代码

from PIL import Image
import pytesseract# 0 Orientation and script detection (OSD) only.
# 1 Automatic page segmentation with OSD.
# 2 Automatic page segmentation, but no OSD, or OCR.
# 3 Fully automatic page segmentation, but no OSD. (Default)
# 4 Assume a single column of text of variable sizes.
# 5 Assume a single uniform block of vertically aligned text.
# 6 Assume a single uniform block of text.
# 7 Treat the image as a single text line.
# 8 Treat the image as a single word.
# 9 Treat the image as a single word in a circle.
# 10 Treat the image as a single character.
# 11 Sparse text. Find as much text as possible in no particular order.
# 12 Sparse text with OSD.
# 13 Raw line. Treat the image as a single text line, bypassing hacks that are Tesseract-specific.def get_chaptcha(psm):pytesseract.pytesseract.tesseract_cmd = r'D:\Tesseract-OCR\tesseract.exe'# 打开图像并转换为灰度图像image = Image.open('captcha.png').convert('L')# image = Image.open('captcha.png')# 使用 OCR 识别验证码captcha_text = pytesseract.image_to_string(image, config=f'--psm {psm}')print(captcha_text)return captcha_textif __name__ == '__main__':get_chaptcha(1)

主要难点就是安装Tesseract-OCR了,去GItHub上搜一搜,去搜索引擎上搜一搜就能下载到了 

然后就是使用tesseract_cmd 指定你的tesseract.exe的位置

Tesseract就是一个别人开发好的用来识别验证码的工具,下载好之后是为了给Python调用的

而pytesseract这个库就是为了调用Tesseract-OCR的

注意:OCR一共有13个模式,一般用索引为1的模式会比较通用,特别是像我这种小白,索引1的模式准没错

Selenium基础实战示例

time.sleep(1)
captcha_png_tag = chrome.find_xpath('//*[@id="captchaImg"]')
# captcha_url = captcha_png_tag.get_attribute('src')
captcha_png_tag.screenshot('captcha.png')
time.sleep(1)
captcha_text = simple_ocr.get_chaptcha(1)
time.sleep(1)
print(captcha_text)
if captcha_text == "":login()captcha_input_tag = chrome.find_xpath('//*[@id="captcha"]')
chrome.input_message_tag(captcha_text, captcha_input_tag)time.sleep(2)
# 检查是否出现了验证码错误弹窗
if check_captcha_error(chrome.driver):close_all_alert(chrome.driver)chrome.driver.refresh()time.sleep(2)  # 等待2秒以确保页面已经加载login()

有的网站的验证码是动态验证码,不能用下载原图的方式获取验证码的图片

只能通过Selenium自带的截图功能截图保存,这个截图功能还是挺好用的,可以支持仅截图某个页面元素

注意:有时候OCR无法识别验证码,会返回空结果,这个时候就得刷新验证码或者刷新网页再次尝试登录了

这篇关于Selenium自动填写验证码(偏小白版本OCR)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/899880

相关文章

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

JAVA实现Token自动续期机制的示例代码

《JAVA实现Token自动续期机制的示例代码》本文主要介绍了JAVA实现Token自动续期机制的示例代码,通过动态调整会话生命周期平衡安全性与用户体验,解决固定有效期Token带来的风险与不便,感兴... 目录1. 固定有效期Token的内在局限性2. 自动续期机制:兼顾安全与体验的解决方案3. 总结PS

linux部署NFS和autofs自动挂载实现过程

《linux部署NFS和autofs自动挂载实现过程》文章介绍了NFS(网络文件系统)和Autofs的原理与配置,NFS通过RPC实现跨系统文件共享,需配置/etc/exports和nfs.conf,... 目录(一)NFS1. 什么是NFS2.NFS守护进程3.RPC服务4. 原理5. 部署5.1安装NF

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

Ubuntu如何升级Python版本

《Ubuntu如何升级Python版本》Ubuntu22.04Docker中,安装Python3.11后,使用update-alternatives设置为默认版本,最后用python3-V验证... 目China编程录问题描述前提环境解决方法总结问题描述Ubuntu22.04系统自带python3.10,想升级

基于Redis自动过期的流处理暂停机制

《基于Redis自动过期的流处理暂停机制》基于Redis自动过期的流处理暂停机制是一种高效、可靠且易于实现的解决方案,防止延时过大的数据影响实时处理自动恢复处理,以避免积压的数据影响实时性,下面就来详... 目录核心思路代码实现1. 初始化Redis连接和键前缀2. 接收数据时检查暂停状态3. 检测到延时过

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默

Linux升级或者切换python版本实现方式

《Linux升级或者切换python版本实现方式》本文介绍在Ubuntu/Debian系统升级Python至3.11或更高版本的方法,通过查看版本列表并选择新版本进行全局修改,需注意自动与手动模式的选... 目录升级系统python版本 (适用于全局修改)对于Ubuntu/Debian系统安装后,验证Pyt