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基础教程之数字处理(math)模块详解
Mar 25 Python
python使用fileinput模块实现逐行读取文件的方法
Apr 29 Python
python文件操作之批量修改文件后缀名的方法
Aug 10 Python
python实现Flappy Bird源码
Dec 24 Python
python3.7环境下安装Anaconda的教程图解
Sep 10 Python
Django认证系统user对象实现过程解析
Mar 02 Python
Python3如何使用多线程升程序运行速度
Aug 11 Python
python绘制分布折线图的示例
Sep 24 Python
python安装第三方库如xlrd的方法
Oct 31 Python
Python超简单容易上手的画图工具库推荐
May 10 Python
Python中json.load()和json.loads()有哪些区别
Jun 07 Python
总结三种用 Python 作为小程序后端的方式
May 02 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
关于Zend Studio 配色方案插件的介绍
2013/06/24 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案
2018/10/14 PHP
php实现微信和支付宝支付的示例代码
2020/08/11 PHP
document.getElementById方法在Firefox与IE中的区别
2010/05/18 Javascript
JavaScript 原型与继承说明
2010/06/09 Javascript
jquery实现奇偶行赋值不同css值
2012/02/17 Javascript
Javascript继承(上)——对象构建介绍
2012/11/08 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
2015/03/03 Javascript
简介JavaScript中fixed()方法的使用
2015/06/08 Javascript
干货分享:让你分分钟学会javascript闭包
2015/12/25 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
2016/01/26 Javascript
jQuery表单验证之密码确认
2017/05/22 jQuery
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
vue父子组件通信的高级用法示例
2019/08/29 Javascript
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
[47:52]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第二场 11.26
2020/11/30 DOTA
用Python写脚本,实现完全备份和增量备份的示例
2018/04/29 Python
PHP实现发送和接收JSON请求
2018/06/07 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
2020/09/17 Python
Python实现UDP程序通信过程图解
2020/05/15 Python
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
Manuka Doctor美国官网:麦卢卡蜂蜜和蜂毒护肤
2016/12/25 全球购物
大都会艺术博物馆商店:The Met Store
2018/06/22 全球购物
美国室内和室外装饰花盆购物网站:ePlanters
2019/03/22 全球购物
澳洲最大的时尚奢侈品电商平台:Cettire
2020/06/15 全球购物
幼儿园实习生辞职信
2014/01/20 职场文书
工作推荐信范文
2014/05/10 职场文书
环保建议书300字
2014/05/14 职场文书
白岩松演讲
2014/05/21 职场文书
庆祝国庆节标语
2014/10/09 职场文书
教代会开幕词
2015/01/28 职场文书
高中运动会广播稿
2015/08/19 职场文书
2016形势与政策学习心得体会
2016/01/12 职场文书
教师节作文之小学四年级
2019/09/03 职场文书