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 相关文章推荐
Python3使用requests发闪存的方法
May 11 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
Feb 13 Python
python如何让类支持比较运算
Mar 20 Python
Python中的并发处理之asyncio包使用的详解
Apr 03 Python
详解Django中类视图使用装饰器的方式
Aug 12 Python
python自动化unittest yaml使用过程解析
Feb 03 Python
python正则过滤字母、中文、数字及特殊字符方法详解
Feb 11 Python
pycharm 关掉syntax检查操作
Jun 09 Python
Tensorflow使用Anaconda、pycharm安装记录
Jul 29 Python
Pycharm 设置默认解释器路径和编码格式的操作
Feb 05 Python
TensorFlow的环境配置与安装方法
Feb 20 Python
使用pd.merge表连接出现多余行的问题解决
Jun 16 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
phpinfo 系统查看参数函数代码
2009/06/05 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
2011/07/03 PHP
一致性哈希算法以及其PHP实现详细解析
2013/08/24 PHP
php设置静态内容缓存时间的方法
2014/12/01 PHP
PHP内存缓存Memcached类实例
2014/12/08 PHP
flash 得到自身url参数的代码
2009/11/15 Javascript
treepanel动态加载数据实现代码
2012/12/15 Javascript
将list转换为json失败的原因
2013/12/17 Javascript
javascript嵌套函数和在函数内调用外部函数的区别分析
2016/01/31 Javascript
JavaScript中循环遍历Array与Map的方法小结
2016/03/12 Javascript
基于javascript实现样式清新图片轮播特效
2016/03/30 Javascript
AngularJS 过滤器的简单实例
2016/07/27 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
2017/09/18 Javascript
vue中vee validate表单校验的几种基本使用
2018/06/25 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
2019/03/28 Javascript
如何在Vue.JS中使用图标组件
2020/08/04 Javascript
解决nuxt页面中mounted、created、watch执行两遍的问题
2020/11/05 Javascript
Python中的hypot()方法使用简介
2015/05/18 Python
python简单实现获取当前时间
2016/08/27 Python
Python循环语句中else的用法总结
2016/09/11 Python
PyCharm导入python项目并配置虚拟环境的教程详解
2019/10/13 Python
python list多级排序知识点总结
2019/10/23 Python
信号生成及DFT的python实现方式
2020/02/25 Python
django xadmin中form_layout添加字段显示方式
2020/03/30 Python
Anaconda和ipython环境适配的实现
2020/04/22 Python
Python OrderedDict字典排序方法详解
2020/05/21 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
巴西最大的玩具连锁店:Ri Happy
2020/06/17 全球购物
物业招聘计划书
2014/01/10 职场文书
收款委托书
2014/10/14 职场文书
会议室管理制度范本
2015/08/06 职场文书
观看安全警示教育片心得体会
2016/01/15 职场文书
教师纪律作风整顿心得体会
2016/01/23 职场文书
祝福语集锦:给妹妹结婚的祝福语
2019/12/18 职场文书
如何在C++中调用Python
2021/05/21 Python