python3定位并识别图片验证码实现自动登录功能


Posted in Python onJanuary 29, 2021

会用到的库的

1、selenium的webdriver
2、tesserocr或者pytesseract进行图像识别
3、pillow的Image进行图片处理

from selenium import webdriver
import tesserocr
from PIL import Image

tesserocr的安装.

获取验证码图片方法1:

def get_code_image(file_name):
 driver.save_screenshot(file_name) # 截取整个屏幕并保存
 code_element = driver.find_element_by_class_name("verify_code_img___1Mei_") # 定位到验证码元素
 left = code_element.location['x'] # 定位到截图位置
 top = code_element.location['y']
 right = code_element.size['width'] + left
 bottom = code_element.size['height'] + top
 im = Image.open(file_name) # 从文件读取截图,截取验证码位置再次保存
 img = im.crop((left, top, right, bottom))
 img.save(file_name)
 return file_name

获取验证码图片方法2:

def get_code_image(file_name):
 code_element = driver.find_element_by_class_name("verify_code_img___1Mei_") # 定位到验证码元素 
 code_element.screenshot(file_name)

注:此方法截图时屏幕会闪动,可能引发bug,如下图,目前没有解决

python3定位并识别图片验证码实现自动登录功能

处理验证码图片

def deal_code_image(file_name):
 image = Image.open(file_name)
 # image.show() #查看处理前的图片
	# 处理图片去除干扰
 # 将图片转化为灰度图像
 image = image.convert('L')
 
 threshold = 90 # 设置临界值,临界值可调试
 table = []
 for i in range(256):
  if i < threshold:
   table.append(0)
  else:
   table.append(1)

 image = image.point(table, '1')
 # image.show() #查看处理后的图片
 # 1:使用tesseract库识别图片中的验证码
 # res = tesserocr.image_to_text(image)
 # 2:使用pytesseract库识别图片中的验证码
 res = pytesseract.image_to_string(image)

 # print(res) #查看识别出来的文案
 res = res.replace(" ", "") #去除结果中的空格
 return res

处理前的图片,有干扰,无法识别

python3定位并识别图片验证码实现自动登录功能

处理后的图片,基本可以识别

python3定位并识别图片验证码实现自动登录功能

识别结果不一定准确,如果验证码输入错误,可以点击换一张图片再次识别,多次尝试,本次不做说明

到此这篇关于python3定位并识别图片验证码实现自动登录的文章就介绍到这了,更多相关python识别图片验证码实现自动登录内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python创建系统目录的方法
Mar 11 Python
Python的Flask框架中@app.route的用法教程
Mar 31 Python
Python实现读取json文件到excel表
Nov 18 Python
对numpy中数组转置的求解以及向量内积计算方法
Oct 31 Python
python 缺失值处理的方法(Imputation)
Jul 02 Python
Python二维码生成识别实例详解
Jul 16 Python
pygame库实现移动底座弹球小游戏
Apr 14 Python
pytorch动态网络以及权重共享实例
Jan 06 Python
Python实现电视里的5毛特效实例代码详解
May 15 Python
django模型类中,null=True,blank=True用法说明
Jul 09 Python
python实现人性化显示金额数字实例详解
Sep 25 Python
Python+腾讯云服务器实现每日自动健康打卡
Dec 06 Python
python中numpy数组与list相互转换实例方法
Jan 29 #Python
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
Jan 29 #Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
Jan 29 #Python
python中spy++的使用超详细教程
Jan 29 #Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
Jan 29 #Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
Jan 29 #Python
如何用python开发Zeroc Ice应用
Jan 29 #Python
You might like
通过ICQ网关发送手机短信的PHP源程序
2006/10/09 PHP
php 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
深入解析php之apc
2013/05/15 PHP
浅析Apache中RewriteCond规则参数的详细介绍
2013/06/30 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
php多文件打包下载的实例代码
2017/07/12 PHP
详解如何实现Laravel的服务容器的方法示例
2019/04/15 PHP
PHP常用函数之根据生日计算年龄功能示例
2019/10/21 PHP
PHP 枚举类型的管理与设计知识点总结
2020/02/13 PHP
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
JavaScript中的isXX系列是否继续使用的分析
2011/04/16 Javascript
获得所有表单值的JQuery实现代码[IE暂不支持]
2012/05/24 Javascript
javascript 判断中文字符长度的函数代码
2012/08/27 Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
2014/06/20 Javascript
Javascript中的arguments与重载介绍
2015/03/15 Javascript
JavaScript中数组的各种操作的总结(必看篇)
2017/02/13 Javascript
微信小程序 首页制作简单实例
2017/04/07 Javascript
JS中cookie的使用及缺点讲解
2017/05/13 Javascript
AngularJS集合数据遍历显示的实例
2017/12/27 Javascript
React中的refs的使用教程
2018/02/13 Javascript
跟混乱的页面弹窗说再见
2019/04/11 Javascript
vue-cli配置flexible过程详解
2019/07/04 Javascript
Python使用matplotlib绘制余弦的散点图示例
2018/03/14 Python
对numpy中的数组条件筛选功能详解
2018/07/02 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
2019/05/29 Python
关于Python内存分配时的小秘密分享
2019/09/05 Python
CSS3样式linear-gradient的使用实例
2017/01/16 HTML / CSS
Linux面试经常问的文件系统操作命令
2015/11/05 面试题
上课说话检讨书大全
2014/01/22 职场文书
给校长的建议书100字
2014/05/16 职场文书
2014年秋季开学寄语
2014/08/02 职场文书
社会实践的活动方案
2014/08/22 职场文书
建议书格式
2015/02/04 职场文书
民事答辩状范本
2015/05/21 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书
python 实现两个变量值进行交换的n种操作
2021/06/02 Python