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装饰器decorator用法实例
Nov 10 Python
python通过pil模块将raw图片转换成png图片的方法
Mar 16 Python
Python读取Json字典写入Excel表格的方法
Jan 03 Python
tensorflow实现逻辑回归模型
Sep 08 Python
python3+PyQt5 数据库编程--增删改实例
Jun 17 Python
python 字典操作提取key,value的方法
Jun 26 Python
使用python实现ftp的文件读写方法
Jul 02 Python
Python3.7 pyodbc完美配置访问access数据库
Oct 03 Python
Python编译成.so文件进行加密后调用的实现
Dec 23 Python
Python使用Pandas库常见操作详解
Jan 16 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
May 18 Python
Python+OpenCV图像处理—— 色彩空间转换
Oct 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 操作文件的一些FAQ总结
2009/02/12 PHP
php对二维数组进行排序的简单实例
2013/12/19 PHP
PHP彩蛋信息介绍和阻止泄漏的方法(隐藏功能)
2014/08/06 PHP
php判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
2017/05/11 PHP
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
innerText 使用示例
2014/01/23 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
JS获取时间的相关函数及时间戳与时间日期之间的转换
2016/02/04 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
2016/05/20 Javascript
Javascript从数组中随机取出不同元素的两种方法
2016/09/22 Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
2018/02/04 Javascript
深入理解Node module模块
2018/03/26 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
关于vue状态过渡transition不起作用的原因解决
2019/04/09 Javascript
javascript数组的定义及操作实例
2019/11/10 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
[02:29]DOTA2英雄基础教程 陈
2013/12/17 DOTA
python实现爬虫统计学校BBS男女比例之数据处理(三)
2015/12/31 Python
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
一篇文章读懂Python赋值与拷贝
2018/04/19 Python
python爬取网易云音乐评论
2018/11/16 Python
浅谈Tensorflow 动态双向RNN的输出问题
2020/01/20 Python
使用PyWeChatSpy自动回复微信拍一拍功能的实现代码
2020/07/02 Python
CSS3与动画有关的属性transition、animation、transform对比(史上最全版)
2017/08/18 HTML / CSS
伦敦一家非常流行的时尚精品店:Oxygen Boutique
2017/01/15 全球购物
Mytheresa美国官网:德国知名的女性奢侈品电商
2017/05/27 全球购物
双立人加拿大官网:Zwilling加拿大
2020/08/10 全球购物
AssertionError 跟一下那个类是 “is – a”的关系
2012/02/21 面试题
幼儿教师研修感言
2014/02/12 职场文书
岗位工作说明书
2014/07/29 职场文书
高中生综合素质评价范文
2015/08/18 职场文书
大学生创业,为什么都会选择快餐饮?
2019/08/08 职场文书
女性励志书籍推荐
2019/08/19 职场文书
Vue项目打包、合并及压缩优化网页响应速度
2021/07/07 Vue.js
Windows下载并安装MySQL8.0.x 版本的完整教程
2022/04/10 MySQL