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判断、获取一张图片主色调的2个实例
Apr 10 Python
python根据文件大小打log日志
Oct 09 Python
python通过wxPython打开一个音频文件并播放的方法
Mar 25 Python
对pandas中to_dict的用法详解
Jun 05 Python
python3下载抖音视频的完整代码
Jun 05 Python
PyQt4编程之让状态栏显示信息的方法
Jun 18 Python
详解python常用命令行选项与环境变量
Feb 20 Python
python数据预处理 :数据共线性处理详解
Feb 24 Python
Pandas —— resample()重采样和asfreq()频度转换方式
Feb 26 Python
Django 自定义权限管理系统详解(通过中间件认证)
Mar 11 Python
python识别验证码的思路及解决方案
Sep 13 Python
Python中 range | np.arange | np.linspace三者的区别
Mar 22 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 表单验证实现代码
2009/03/10 PHP
PHP操作Postgresql封装类与应用完整实例
2018/04/24 PHP
PHP的PDO大对象(LOBs)
2019/01/27 PHP
获取焦点时,利用js定时器设定时间执行动作
2010/04/02 Javascript
javascript 循环读取JSON数据的代码
2010/07/17 Javascript
Web开发之JavaScript
2012/03/29 Javascript
jQuery extend 的简单实例
2013/09/18 Javascript
jquery下div 的resize事件示例代码
2014/03/09 Javascript
JavaScript通过Date-Mask将日期转换成字符串的方法
2015/06/04 Javascript
超赞的jQuery图片滑块动画特效代码汇总
2016/01/25 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
2018/04/27 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
2018/07/24 Javascript
JS实现中英文混合文字溢出友好截取功能
2018/08/06 Javascript
微信小程序实现左滑修改、删除功能
2020/10/19 Javascript
在vue中实现清除echarts上次保留的数据(亲测有效)
2020/09/09 Javascript
[04:03]辉夜杯主赛事 12月25日RECAP精彩回顾
2015/12/26 DOTA
使用Python编写Linux系统守护进程实例
2015/02/03 Python
python自动格式化json文件的方法
2015/03/11 Python
Python科学计算包numpy用法实例详解
2018/02/08 Python
Python封装原理与实现方法详解
2018/08/28 Python
python绘制评估优化算法性能的测试函数
2019/06/25 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
2020/07/20 Python
Pycharm中如何关掉python console
2020/10/27 Python
Nice Kicks网上商店:ShopNiceKicks.com
2018/12/25 全球购物
澳大利亚最早和最古老的巨型游戏专家:Yardgames
2020/02/20 全球购物
为什么使用接口?
2014/08/13 面试题
日语专业毕业生自荐信
2013/11/11 职场文书
会计电算化专业毕业生求职信范文
2013/12/10 职场文书
创业计划书的内容步骤和要领
2014/01/04 职场文书
汽车促销活动方案
2014/03/31 职场文书
优秀员工演讲稿
2014/05/19 职场文书
2014年维修电工工作总结
2014/11/20 职场文书
2015新年联欢晚会开场白
2014/12/14 职场文书
2015年统战工作总结
2015/05/19 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书