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制作获取网站目录的图形化程序
May 04 Python
通过Python实现自动填写调查问卷
Sep 06 Python
用TensorFlow实现戴明回归算法的示例
May 02 Python
Python3中的json模块使用详解
May 05 Python
Python逐行读取文件中内容的简单方法
Feb 26 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
Jun 24 Python
springboot配置文件抽离 git管理统 配置中心详解
Sep 02 Python
python进程池实现的多进程文件夹copy器完整示例
Nov 27 Python
jupyter notebook 参数传递给shell命令行实例
Apr 10 Python
宝塔面板成功部署Django项目流程(图文)
Jun 22 Python
python virtualenv虚拟环境配置与使用教程详解
Jul 13 Python
Python干货实战之八音符酱小游戏全过程详解
Oct 24 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
php xml实例 留言本
2009/03/20 PHP
利用curl 多线程 模拟 并发的详解
2013/06/14 PHP
Yii2针对指定url的生成及图片等的引入方法小结
2016/07/18 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
2016/11/14 PHP
php中对象引用和复制实例分析
2019/08/14 PHP
基于jQuery的星级评分插件
2011/08/12 Javascript
javascript break指定标签打破多层循环示例
2014/01/20 Javascript
查询json的数据结构的8种方式简介
2014/03/10 Javascript
IE中鼠标经过option触发mouseout的解决方法
2015/01/29 Javascript
原生js结合html5制作小飞龙的简易跳球
2015/03/30 Javascript
对javascript继承的理解
2016/10/11 Javascript
Bootstrap选项卡学习笔记分享
2017/02/13 Javascript
整理一些最近经常遇到的前端面试题
2017/04/25 Javascript
BootStrap的两种模态框方式
2017/05/10 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
webpack项目使用eslint建立代码规范实现
2019/05/16 Javascript
koa+jwt实现token验证与刷新功能
2019/05/30 Javascript
微信小程序webview 脚手架使用详解
2019/07/22 Javascript
Element-UI+Vue模式使用总结
2020/01/02 Javascript
Python字符串和文件操作常用函数分析
2015/04/08 Python
python机器学习理论与实战(一)K近邻法
2021/01/28 Python
python对于requests的封装方法详解
2019/01/03 Python
python3实现表白神器
2019/04/09 Python
使用python爬取抖音视频列表信息
2019/07/15 Python
python 实现单通道转3通道
2019/12/03 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
解决pycharm 格式报错tabs和space不一致问题
2021/02/26 Python
CSS3 text shadow字体阴影效果
2016/01/08 HTML / CSS
巴西食品补充剂在线零售商:Músculos na Web
2017/08/07 全球购物
Hertz荷兰:荷兰和全球租车
2018/01/07 全球购物
雅诗兰黛澳大利亚官网:Estée Lauder澳大利亚
2019/05/31 全球购物
中式餐厅创业计划书范文
2014/01/23 职场文书
特色冷饮店创业计划书
2014/01/28 职场文书
学雷锋演讲稿
2014/03/04 职场文书
经典安踏广告词
2014/03/21 职场文书
js前端面试常见浏览器缓存强缓存及协商缓存实例
2022/06/21 Javascript