上篇文章《python+selenium+pytesseract识别图片验证码》对验证码进行识别后,应用到具体实例过程中,发现该算法识别可能会出现识别错误或者没有输出结果的情况,所以在具体应用时需要对验证码输入代码进行优化。

一、剪切验证码图片

将验证码剪切部分提出成一个单独的方法,方便调用

  • test_cut.py
from io import BytesIO
from test.testBefore.testDriver import driver
from PIL import Imagedef cut(xpath):# 要截图的元素element = driver.find_element_by_xpath(xpath)# 坐标x, y = element.location.values()# 宽高h, w = element.size.values()# 把截图以二进制形式的数据返回image_data = driver.get_screenshot_as_png()# 以新图片打开返回的数据screenshot = Image.open(BytesIO(image_data))# 对截图进行裁剪result = screenshot.crop((x, y, x + w, y + h))# 显示图片# result.show()# 保存验证码result.save('./VerifyCode.png')return result

二、图片处理

参考上篇文章的test_pytesseract.py
《python+selenium+pytesseract识别图片验证码》

三、验证码识别实例

如果弹窗提示“验证码错误!”或“验证码必须填写!”等提示,则使用goto方法重新对验证码进行处理。goto方法使用可以参考python3 使用 goto 跳转执行指定代码行

from goto import with_goto
import time
from test.testBefore.testDriver import driver
from test.util.test_pytesseract import recognize
from test.util.test_cut import cut'''/处理验证码'''label.begincut('//*[@id="imgVerifyCode"]')# 调用recognize方法识别验证码code = recognize('verifyCode.png')# 输入验证码driver.find_element_by_xpath('//*[@id="txtcode"]').send_keys(code)'''处理验证码/'''# 点击提交按钮driver.find_element_by_xpath('/html/body/div/div[2]/div[2]/div/div[2]/div/input').click()time.sleep(1)# 判断验证码是否正确输入try:if driver.switch_to_alert().text == '验证码错误!':# 如果弹窗提示验证码错误,点击弹窗确认按钮,本项目会自动刷新验证码,然后对验证码重新处理driver.switch_to.alert.accept()goto.beginelif driver.switch_to_alert().text == '验证码必须填写!':# 如果弹窗提示验证码必须填写,说明这张验证码识别不了,需要刷新验证码重新处理driver.switch_to.alert.accept()driver.find_element_by_xpath('//*[@id="imgVerifyCode"]').click()goto.beginexcept:pass
  • 注意:实例中的定位元素和弹窗输出需要根据不同项目进行修改。

python+selenium识别验证码实例相关推荐

  1. 关于java+selenium识别验证码的问题

    ---------## (关于java+selenium识别验证码的问题) hahahahahahahahahahahahahaha~The first time you write a blog, ...

  2. 使用Python+Selenium+图灵验证码识别平台,识别B站/bilibili的中文验证码,并自动登陆B站

    一直想用python写一个程序帮我自动登陆B站,完成一些点击任务,懂的都懂 =v= 最近终于腾出时间来搞了,其实最难的部分就是中文验证码的识别.这个借助API接口也能轻松搞定.下面分享一下全部源码(前 ...

  3. python selenium手动输入验证码_案例:selenium实现登录百度(如有验证码,需要手动输入)...

    func.py baidu_login.py中(如有验证码,需要手动输入) # 导入webdriver import os import time import re from lxml import ...

  4. playwright--登录识别验证码实例

    文章目录 前言 一.验证码识别处理 二.登录实例 前言 做UI自动化时,经常会遇到登录时,需要识别验证码的难题,以下主要处理简单验证码的识别,且实现一个登录小实例 一.验证码识别处理 1.安装dddd ...

  5. python 训练识别验证码_python使用tensorflow深度学习识别验证码

    本文介绍了python使用tensorflow深度学习识别验证码 ,分享给大家,具体如下: 除了传统的PIL包处理图片,然后用pytessert+OCR识别意外,还可以使用tessorflow训练来识 ...

  6. Python Tesseract识别验证码

    学习记录, 仅供参考 文章目录 准备工作 tesseract初试 下载样本 图片降噪 tesseract初训练 tesseract样本训练 测试训练结果 我们在写爬虫的时候经常遇到网页需要登陆的情况, ...

  7. python+Selenium自动签到实例

    引言 环境准备 代码 飞猪签到领里程 京东签到领京豆 什么值得买签到 windows计划任务 方法一 方法二 总结 参考 引言 Selenium是一个用于Web应用程序测试的工具.可以十分简单的模拟输 ...

  8. Python+Selenium 含验证码的登录处理

    以易码网站的注册界面为例 python版本:2.7 所需要的代码库:PIL,selenium,pytesser selenium安装 pip install selenium 代码库安装地址稍后给出, ...

  9. python 训练识别验证码_用Python机器学习搞定验证码

    原标题:用Python机器学习搞定验证码 写爬虫有一个绕不过去的问题就是验证码,现在验证码分类大概有4种: 图像类 滑动类 点击类 语音类 今天先来看看图像类,这类验证码大多是数字.字母的组合,国内也 ...

最新文章

  1. oracle使用小技巧
  2. django 的form登录 注册
  3. 关于StreamReader的构造函数
  4. urllib的实现---cookie处理
  5. 数据库-优化-数据库系统配置优化-操作系统优化
  6. pandas和spark的区别
  7. leetcode--数组(Medium1)
  8. python中object是什么类型_Python 的 type 和 object 之间是怎么一种关系?
  9. linux教程第五版第三章课后答案,linux 第三章 章习题.doc
  10. java读取mysql配置文件_Linux运维:MySQL读写分离解决方案
  11. BZOJ 3529 数表(莫比乌斯+树状数组)
  12. 4. 怎么在生活中提升专注力?
  13. python可以做什么工作-Python可以做什么工作?Python有哪些方向?
  14. 利用memoize缓存到Redis出现多个参数同一个结果
  15. 安卓交换位置动画_好马配好鞍,OriginOS系统让安卓系统大变样
  16. html动态绑定树形菜单,jQuery ztree实现动态树形多选菜单
  17. oracle open 101,解决oracle数据库ORA-65101 container database set up incorrectly
  18. win10命令行快捷键
  19. 投资组合管理之投资组合概论
  20. android 设内网固定ip,如何给手机设置一个固定的内网ip

热门文章

  1. 资源 | 2018伯克利课程《AI导论》(附PPT、视频下载)
  2. [InnoDB] [FATAL] Tablespace id is xx in the data dictionary but in file .\test\t3.ibd it is xx!
  3. cocos2dx 实现战争迷雾效果
  4. hyperapp 共享_使用Hyperapp(1KB JS微框架)构建待办事项列表
  5. 【Neo4j构建知识图谱】配置知识图谱插件APOC与案例实现
  6. 三步教你从零开始成为单片机达人
  7. Dotnet new 根据模板创建项目
  8. 百练4115 鸣人和佐助(变式BFS)
  9. 51单片机银行自助排队叫号系统VIP热敏打印功能DY-SV17F语音播报
  10. Go在广发证券分布式行情和交易系统的应用和实践