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 相关文章推荐
python3使用tkinter实现ui界面简单实例
Jan 10 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 Python
Python在不同目录下导入模块的实现方法
Oct 27 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
Mar 15 Python
Python实现在某个数组中查找一个值的算法示例
Jun 27 Python
Linux CentOS Python开发环境搭建教程
Nov 28 Python
python如何解析配置文件并应用到项目中
Jun 27 Python
Django使用模板后无法找到静态资源文件问题解决
Jul 19 Python
学Python 3的理由和必要性
Nov 19 Python
Pytorch中实现只导入部分模型参数的方式
Jan 02 Python
Python-openpyxl表格读取写入的案例详解
Nov 02 Python
python在地图上画比例的实例详解
Nov 13 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 网页游戏开发入门教程一(webgame+design)
2009/10/26 PHP
PHP计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
codeigniter实现get分页的方法
2015/07/10 PHP
capacityFixed 基于jquery的类似于新浪微博新消息提示的定位框
2011/05/24 Javascript
Javascript弹出窗口的各种方法总结
2013/11/11 Javascript
node.js中的buffer.write方法使用说明
2014/12/10 Javascript
基于JS代码实现导航条弹出式悬浮菜单
2016/06/17 Javascript
基于JavaScript实现鼠标向下滑动加载div的代码
2016/08/31 Javascript
SelecT下拉框选中和取值的解决方法
2016/11/22 Javascript
JavaScript实现邮箱地址自动匹配功能代码
2016/11/28 Javascript
JS实现利用两个队列表示一个栈的方法
2017/12/13 Javascript
vue引入新版 vue-awesome-swiper插件填坑问题
2018/01/25 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
js的继承方法小结(prototype、call、apply)(推荐)
2019/04/17 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
vue项目中常见问题及解决方案(推荐)
2019/10/21 Javascript
javascript设计模式之装饰者模式
2020/01/30 Javascript
vue项目使用$router.go(-1)返回时刷新原来的界面操作
2020/07/26 Javascript
微信小程序canvas实现签名功能
2021/01/19 Javascript
python ddt实现数据驱动
2018/03/14 Python
Python进阶之@property动态属性的实现
2019/04/01 Python
python检测服务器端口代码实例
2019/08/31 Python
django 将自带的数据库sqlite3改成mysql实例
2020/07/09 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
2020/10/21 Python
世界上最大的艺术社区:SAA
2020/12/30 全球购物
汉语言文学毕业生求职信
2013/10/01 职场文书
生产内勤岗位职责
2013/12/07 职场文书
建筑工程管理专业自荐信范文
2013/12/28 职场文书
学生自我评价范文
2014/02/02 职场文书
教师党员公开承诺书
2014/03/25 职场文书
商务英语专业求职信
2014/06/26 职场文书
员工年终自我评价
2014/09/14 职场文书
家长评语怎么写
2014/12/30 职场文书
试用期旷工辞退通知书
2015/04/17 职场文书
2015年小学教师培训工作总结
2015/07/21 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书