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通过scapy获取局域网所有主机mac地址示例
May 04 Python
用Python制作检测Linux运行信息的工具的教程
Apr 01 Python
在Python中调用ggplot的三种方法
Apr 08 Python
详解Python的Django框架中的通用视图
May 04 Python
python使用电子邮件模块smtplib的方法
Aug 28 Python
python使用os.listdir和os.walk获得文件的路径的方法
Dec 16 Python
python贪婪匹配以及多行匹配的实例讲解
Apr 19 Python
python 发送和接收ActiveMQ消息的实例
Jan 30 Python
值得收藏的10道python 面试题
Apr 15 Python
Pycharm最常用的快捷键及使用技巧
Mar 05 Python
Python内置函数property()如何使用
Sep 01 Python
使用pandas生成/读取csv文件的方法实例
Jul 09 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
重料打造自己的“宝马”---第三代
2021/03/02 无线电
php 数组的创建、调用和更新实现代码
2009/03/09 PHP
深入php函数file_get_contents超时处理的方法详解
2013/06/03 PHP
PHP实现AES256加密算法实例
2014/09/22 PHP
详解如何在云服务器上部署Laravel
2017/06/30 PHP
jQuery ajax cache缓存问题
2010/07/01 Javascript
jQuery EasyUI 的EasyLoader功能介绍
2010/09/12 Javascript
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
关于jQuery object and DOM element
2013/04/15 Javascript
浅谈关于JavaScript API设计的一些建议和准则
2015/06/24 Javascript
js焦点文字滚动效果代码分享
2015/08/25 Javascript
从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别
2016/06/12 Javascript
javascript实现去除HTML标签的方法
2016/12/26 Javascript
jquery精度计算代码 jquery指定精确小数位
2017/02/06 Javascript
jQuery is not defined 错误原因与解决方法小结
2017/03/19 Javascript
作为老司机使用 React 总结的 11 个经验教训
2017/04/08 Javascript
详解mpvue开发小程序小总结
2018/07/25 Javascript
对angularJs中controller控制器scope父子集作用域的实例讲解
2018/10/08 Javascript
微信小程序tabbar底部导航
2018/11/05 Javascript
Angular Material Icon使用详解
2018/11/07 Javascript
layui点击弹框页面 表单请求的方法
2019/09/21 Javascript
JavaScript forEach中return失效问题解决方案
2020/06/01 Javascript
python实现简单的socket server实例
2015/04/29 Python
理解生产者消费者模型及在Python编程中的运用实例
2016/06/26 Python
python创建列表和向列表添加元素的实现方法
2017/12/25 Python
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
TensorFlow 滑动平均的示例代码
2018/06/19 Python
python从PDF中提取数据的示例
2020/10/30 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
2021/02/26 Python
HTML5 3D旋转相册的实现示例
2019/12/03 HTML / CSS
路易威登和香奈儿手袋:LuxeDH
2017/01/12 全球购物
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
室内设计专业个人的自我评价
2013/10/19 职场文书
浅谈 JavaScript 沙箱Sandbox
2021/11/02 Javascript
分享很少见很有用的SQL功能CORRESPONDING
2022/08/05 MySQL