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转换字符串为摩尔斯电码的方法
Jul 06 Python
Python设计模式编程中解释器模式的简单程序示例分享
Mar 02 Python
python实现稀疏矩阵示例代码
Jun 09 Python
Python使用matplotlib实现基础绘图功能示例
Jul 03 Python
python将txt等文件中的数据读为numpy数组的方法
Dec 22 Python
celery4+django2定时任务的实现代码
Dec 23 Python
漂亮的Django Markdown富文本app插件的实现
Jan 02 Python
详解【python】str与json类型转换
Apr 29 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
Aug 27 Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
Oct 14 Python
Python中if有多个条件处理方法
Feb 26 Python
详解pandas赋值失败问题解决
Nov 29 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
让ThinkPHP支持大小写url地址访问的方法
2014/10/31 PHP
php实现html标签闭合检测与修复方法
2015/07/09 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
PHP 自动加载类原理与用法实例分析
2020/04/14 PHP
在网页中屏蔽快捷键
2006/09/06 Javascript
HTML代码中标签的全部属性 中文注释说明
2009/03/26 Javascript
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
js关闭模态窗口刷新父页面或跳转页面
2012/12/13 Javascript
基于javascript实现图片左右切换效果
2016/01/25 Javascript
使用jQuery实现Web页面换肤功能的要点解析
2016/05/12 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
JavaScript数组操作函数汇总
2016/08/05 Javascript
Jquery根据浏览器窗口改变调整大小的方法
2017/02/07 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
Js中async/await的执行顺序详解
2017/09/22 Javascript
基于js中this和event 的区别(详解)
2017/10/24 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
JavaScript反射与依赖注入实例详解
2018/05/29 Javascript
解决vue2中使用elementUi打包报错的问题
2020/09/22 Javascript
Python实现字符串格式化输出的方法详解
2017/09/20 Python
Python 3.6 读取并操作文件内容的实例
2018/04/23 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
在ipython notebook中使用argparse方式
2020/04/20 Python
python 识别登录验证码图片功能的实现代码(完整代码)
2020/07/03 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
css3学习系列之移动属性详解
2017/07/04 HTML / CSS
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
优秀本科生求职推荐信
2014/02/24 职场文书
如何写自我评价?自我评价写什么好?
2014/03/14 职场文书
卫生院艾滋病宣传活动小结
2014/07/09 职场文书
活动总结新闻稿
2014/08/30 职场文书
法定代表人证明书
2014/11/28 职场文书
怎样写辞职信
2015/02/27 职场文书
2016教师节问候语
2015/11/10 职场文书
2019年英语版感谢信(8篇)
2019/09/29 职场文书