python自动化实现登录获取图片验证码功能


Posted in Python onNovember 20, 2019

主要记录一下:图片验证码

1.获取登录界面的图片

2.获取验证码位置

3.在登录页面截取验证码保存

4.调用百度api识别(目前准确率较高的识别图片api)

本次登录的系统页面,可以看到图片验证码的位置

python自动化实现登录获取图片验证码功能

from selenium import webdriver
import time
from PIL import Image
base_url = '***********'
browser = webdriver.Chrome()
browser.maximize_window()
browser.implicitly_wait(10)
browser.get(base_url)
# (1)登录页面截图
browser.save_screenshot("D:/pic.png")#可以修改保存地址
# (2)基操
browser.find_element_by_name("username").send_keys("gxx")
browser.find_element_by_name("password").send_keys("123456")
time.sleep(2)
# (3)获取图片验证码坐标
code_ele = browser.find_element_by_xpath("//*[@id='app']/div/div[1]/form/div[3]/div/div/div[2]/div/img")
print("验证码的坐标为:", code_element.location)#控制台查看{'x': 1086, 'y': 368}
print("验证码的大小为:", code_element.size)# 图片大小{'height': 40, 'width': 110}
# (4)图片4个点的坐标位置
left = code_ele.location['x']#x点的坐标
top = code_ele.location['y']#y点的坐标
right = code_ele.size['width']+left#上面右边点的坐标
down = code_ele.size['height']+top#下面右边点的坐标
image = Image.open('D:/pic.png')
# (4)将图片验证码截取
code_image = image.crop((left, top, right, height))
code_image.save('D:/pic1.png')#截取的验证码图片保存为新的文件

上面我们已经把图片保存到本地

这就是我们截取的验证码

python自动化实现登录获取图片验证码功能

接下来要调用 百度ocr识别

链接: https://ai.baidu.com/docs#/

然后可以选择通用文字识别或者 高精度版本,这个 看个人选择,不过验证码识别还是选择高精度 版本(也不一定识别的出来 大家还是佛吧,测试的时候让开发把验证码去掉嘻嘻)
自己去申请一个百度云账号,然后开通文字识别服务…就酱
新建一个py文件

#百度ocr提供了模板,我们直接复制就ok
#下载通用文字识别的python sdk,一定要放在你写的代码的文件夹下面
from aip import AipOcr 
from os import path
def baiduOCR(picfile,outfile):#picfile:图片文件名 outfile:输出文件
  filename = path.basename(picfile)#图片名称
  #百度提供
  """ 你的 APPID AK SK """
  APP_ID = ''#这是你产品服务的appid
  API_KEY = ''#这是你产品服务的appkey
  SECRET_KEY = ''#这是你产品服务的secretkey
  client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
  i = open(picfile, 'rb')
  img = i.read()

  print("正在识别图片:\t" + filename)
  """ 调用通用文字识别(高精度版) """
  message = client.basicAccurate(img)
  print("识别成功!")
  i.close()
  with open(outfile, 'a+') as fo:#这边是写进.txt文件
    fo.writelines("*" * 60 + '\n')#搞点花里胡哨的做区分
    fo.writelines("识别图片:\t" + filename + "\n" * 2)
    fo.writelines("文本内容:\n")
    # 输出文本内容
    for text in message.get('words_result'):#识别的内容 
      fo.writelines(text.get('words') + '\n')
    fo.writelines('\n' * 2)
  print("文本导出成功!")
  print()

if __name__ == '__main__' :
  outfile = 'D:/export1.txt'#保存的文件
  baiduOCR('D:/pic1.png', outfile)
  print('图片文本提取结束!文本输出结果位于 %s 文件中。' % outfile)

python自动化实现登录获取图片验证码功能

这样就识别出来 了,这个能识别正确我也是惊讶了
毕竟之前好多次都 识别的不准确
好!这样 验证码就识别出来 惹,然后把识别的内容输进框子里,点击登录就ok

总结

以上所述是小编给大家介绍的python自动化实现登录获取图片验证码功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
跟老齐学Python之玩转字符串(2)
Sep 14 Python
python实现的简单抽奖系统实例
May 22 Python
深入解析Python中的lambda表达式的用法
Aug 28 Python
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
Jun 14 Python
Python打包可执行文件的方法详解
Sep 19 Python
python实现杨辉三角思路
Jul 14 Python
Python求解任意闭区间的所有素数
Jun 10 Python
详解多线程Django程序耗尽数据库连接的问题
Oct 08 Python
在Python 中同一个类两个函数间变量的调用方法
Jan 31 Python
python中dict使用方法详解
Jul 17 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
Aug 08 Python
pycharm2020.2 配置使用的方法详解
Sep 16 Python
python通过链接抓取网站详解
Nov 20 #Python
python爬虫之遍历单个域名
Nov 20 #Python
python matplotlib 画dataframe的时间序列图实例
Nov 20 #Python
python中Lambda表达式详解
Nov 20 #Python
TensorFlow索引与切片的实现方法
Nov 20 #Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
Nov 20 #Python
python中必要的名词解释
Nov 20 #Python
You might like
星际原理概述
2020/03/04 星际争霸
PHP去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
CodeIgniter读写分离实现方法详解
2016/01/20 PHP
详解php 使用Callable Closure强制指定回调类型
2017/10/26 PHP
php接口实现拖拽排序功能
2018/04/23 PHP
针对PHP开发安全问题的相关总结
2019/03/22 PHP
laravel 修改记住我功能的cookie保存时间的方法
2019/10/14 PHP
angularjs的一些优化小技巧
2014/12/06 Javascript
了不起的node.js读书笔记之mongodb数据库交互
2014/12/22 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
node.js文件上传处理示例
2016/10/27 Javascript
ES6新特性三: Generator(生成器)函数详解
2017/04/21 Javascript
jQuery选择器之属性过滤选择器详解
2017/09/28 jQuery
微信小程序之数据缓存的实例详解
2017/09/29 Javascript
解决JQuery的ajax函数执行失败alert函数弹框一闪而过问题
2019/04/10 jQuery
原生js实现trigger方法示例代码
2019/05/22 Javascript
element ui分页多选,翻页记忆的实例
2019/09/03 Javascript
JavaScript 斐波那契数列 倒序输出 输出100以内的质数代码实例
2019/09/11 Javascript
Vue基础配置讲解
2019/11/29 Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
2020/08/27 Javascript
微信小程序入门之指南针
2020/10/22 Javascript
python单元测试unittest实例详解
2015/05/11 Python
Python 性能优化技巧总结
2016/11/01 Python
python基于http下载视频或音频
2018/06/20 Python
使用tensorflow显示pb模型的所有网络结点方式
2020/01/23 Python
Django 自定义404 500等错误页面的实现
2020/03/08 Python
Python日志打印里logging.getLogger源码分析详解
2021/01/17 Python
CSS3 3D立方体效果示例-transform也不过如此
2016/12/05 HTML / CSS
浅谈HTML5 FileReader分布读取文件以及其方法简介
2017/11/09 HTML / CSS
写出二分查找算法的两种实现
2013/05/13 面试题
航海技术专业毕业生求职信
2014/04/06 职场文书
《少年王勃》教学反思
2014/04/27 职场文书
船舶工程技术专业求职信
2014/08/07 职场文书
惊天动地观后感
2015/06/10 职场文书
浅谈Python数学建模之数据导入
2021/06/23 Python
html5调用摄像头截图功能
2022/01/18 Javascript