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中函数的参数传递与可变长参数介绍
Jun 30 Python
Python 快速实现CLI 应用程序的脚手架
Dec 05 Python
Python KMeans聚类问题分析
Feb 23 Python
详解python异步编程之asyncio(百万并发)
Jul 07 Python
Python设计模式之外观模式实例详解
Jan 17 Python
Python使用LDAP做用户认证的方法
Jun 20 Python
Python整数对象实现原理详解
Jul 01 Python
python读取.mat文件的数据及实例代码
Jul 12 Python
python multiprocessing多进程变量共享与加锁的实现
Oct 02 Python
pycharm不能运行.py文件的解决方法
Feb 12 Python
Python爬虫实现模拟点击动态页面
Mar 05 Python
python3定位并识别图片验证码实现自动登录功能
Jan 29 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抓取、分析国内视频网站的视频信息工具类
2014/04/02 PHP
ThinkPHP处理Ajax返回的方法
2014/11/22 PHP
PHP按指定键值对二维数组进行排序的方法
2015/12/22 PHP
JavaScript 利用Cookie记录用户登录信息
2009/12/08 Javascript
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
2011/04/12 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
jQuery实现多按钮单击变色
2014/11/27 Javascript
angularjs的一些优化小技巧
2014/12/06 Javascript
jquery实现可关闭的倒计时广告特效代码
2015/09/02 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
JS实现仿微信支付弹窗功能
2018/06/25 Javascript
vue中的数据绑定原理的实现
2018/07/02 Javascript
微信小程序实现分享到朋友圈功能
2018/07/19 Javascript
JavaScript Array对象基本方法详解
2019/09/03 Javascript
详解Vue之计算属性
2020/06/20 Javascript
[46:53]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python在多玩图片上下载妹子图的实现代码
2013/08/13 Python
基于Python实现通过微信搜索功能查看谁把你删除了
2016/01/27 Python
浅谈插入排序算法在Python程序中的实现及简单改进
2016/05/04 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
Python实现的txt文件去重功能示例
2018/07/07 Python
Python并行分布式框架Celery详解
2018/10/15 Python
python获取磁盘号下盘符步骤详解
2019/06/19 Python
基于Python2、Python3中reload()的不同用法介绍
2019/08/12 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
2020/04/29 Python
POP文化和音乐灵感的时尚:Hot Topic
2019/06/19 全球购物
线程的基本概念、线程的基本状态以及状态之间的关系
2012/10/26 面试题
带薪年假请假条
2014/02/04 职场文书
班委竞选演讲稿
2014/04/28 职场文书
保护地球的标语
2014/06/17 职场文书
整改落实情况汇报材料
2014/10/29 职场文书
2015年小学辅导员工作总结
2015/05/27 职场文书
女方家长婚礼致辞
2015/07/27 职场文书
公司出差管理制度范本
2015/08/05 职场文书
2016年小学教师政治学习心得体会
2016/01/23 职场文书
python 如何用terminal输入参数
2021/05/25 Python