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中__init__和__new__的区别详解
Jul 09 Python
python之文件的读写和文件目录以及文件夹的操作实现代码
Aug 28 Python
python解决汉字编码问题:Unicode Decode Error
Jan 19 Python
Python读取excel中的图片完美解决方法
Jul 27 Python
python实现五子棋小游戏
Mar 25 Python
Python人脸识别第三方库face_recognition接口说明文档
May 03 Python
python3 打印输出字典中特定的某个key的方法示例
Jul 06 Python
如何基于Python批量下载音乐
Nov 11 Python
Python GUI库PyQt5图形和特效样式QSS介绍
Feb 25 Python
Python opencv相机标定实现原理及步骤详解
Apr 09 Python
Python爬虫爬取博客实现可视化过程解析
Jun 29 Python
Django中template for如何使用方法
Jan 31 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
十天学会php之第三天
2006/10/09 PHP
PHP中常用数组处理方法实例分析
2008/08/30 PHP
初步介绍PHP扩展开发经验分享
2012/09/06 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
2020/02/07 PHP
让whoops帮我们告别ThinkPHP6的异常页面
2020/03/02 PHP
use jscript List Installed Software
2007/06/11 Javascript
获取body标签的两种方法
2011/10/13 Javascript
表单类各种类型(文本框)失去焦点效果jquery代码
2013/04/26 Javascript
基于jquery的网站幻灯片切换效果焦点图代码
2013/09/15 Javascript
JavaScript实现继承的4种方法总结
2014/10/16 Javascript
node.js中的path.extname方法使用说明
2014/12/09 Javascript
node.js中的fs.lchown方法使用说明
2014/12/16 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
2015/08/05 Javascript
Jquery 1.9.1源码分析系列(十二)之筛选操作
2015/12/02 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
2016/04/18 Javascript
Angular2从搭建环境到开发步骤详解
2016/10/17 Javascript
JS实现淡入淡出图片效果的方法分析
2016/12/20 Javascript
JavaScript函数参数的传递方式详解
2017/03/06 Javascript
JavaScript字符串转数字的简单实现方法
2020/11/27 Javascript
Python写的一个简单DNS服务器实例
2014/06/04 Python
Python Web框架Flask中使用百度云存储BCS实例
2015/02/08 Python
Python使用OpenCV进行标定
2018/05/08 Python
使用Python实现微信提醒备忘录功能
2018/12/04 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
Python获取浏览器窗口句柄过程解析
2020/07/25 Python
Python+OpenCV图像处理——图像二值化的实现
2020/10/24 Python
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
学生就业推荐信
2013/11/13 职场文书
简历自我评价模板
2015/03/11 职场文书
大学生村官驻村工作心得体会
2016/01/23 职场文书
《夸父追日》教学反思
2016/02/20 职场文书
财务年终工作总结大全
2019/06/20 职场文书
高效笔记技巧分享:学会这些让你不再困扰
2019/09/04 职场文书
详解Laravel服务容器的优势
2021/05/29 PHP
解析mybatis-plus中的resultMap简单使用
2021/11/23 Java/Android