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 性能优化技巧总结
Nov 01 Python
Python 模拟登陆的两种实现方法
Aug 10 Python
python图像常规操作
Nov 11 Python
python实现简单遗传算法
Mar 19 Python
Python Xml文件添加字节属性的方法
Mar 31 Python
用Python写脚本,实现完全备份和增量备份的示例
Apr 29 Python
python文件操作之批量修改文件后缀名的方法
Aug 10 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
Dec 18 Python
python+opencv实现阈值分割
Dec 26 Python
python Matplotlib基础--如何添加文本和标注
Jan 26 Python
python小程序之飘落的银杏
Apr 17 Python
python四个坐标点对图片区域最小外接矩形进行裁剪
Jun 04 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通用检测函数集合
2006/11/25 PHP
php+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
2007/03/07 PHP
php+mysql 实现身份验证代码
2010/03/24 PHP
PHP实现一维数组转二维数组的方法
2015/02/25 PHP
使用Yii2实现主从数据库设置
2016/11/20 PHP
PHP如何根据文件头检测文件类型实例代码
2018/10/14 PHP
非常好的js代码
2006/06/27 Javascript
jQuery结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
2011/02/18 Javascript
在子窗口中关闭父窗口的一句代码
2013/10/21 Javascript
JavaScript判断变量是否为undefined的两种写法区别
2013/12/04 Javascript
jquery导航制件jquery鼠标经过变色效果示例
2013/12/05 Javascript
利用JS来控制键盘的上下左右键(示例代码)
2013/12/14 Javascript
JavaScript中使用自然对数ln的方法
2015/06/14 Javascript
基于jQuery Ajax实现上传文件
2016/03/24 Javascript
url中的特殊符号有什么含义(推荐)
2016/06/17 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
AngularJS中如何使用echart插件示例详解
2016/10/26 Javascript
JS正则验证多个邮箱完整实例【邮箱用分号隔开】
2017/04/19 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
vue 的 solt 子组件过滤过程解析
2019/09/07 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
selenium+java中用js来完成日期的修改
2019/10/31 Javascript
js实现百度淘宝搜索功能
2020/02/17 Javascript
基于vue hash模式微信分享#号的解决
2020/09/07 Javascript
使用Python下载Bing图片(代码)
2013/11/07 Python
零基础写python爬虫之使用urllib2组件抓取网页内容
2014/11/04 Python
Python列表(list)、字典(dict)、字符串(string)基本操作小结
2014/11/28 Python
Python键盘输入转换为列表的实例
2018/06/23 Python
python随机数分布random均匀分布实例
2019/11/27 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
Python3爬虫关于识别点触点选验证码的实例讲解
2020/07/30 Python
戴尔美国官网:Dell
2016/08/31 全球购物
个人纪律作风整改措施思想汇报
2014/10/12 职场文书
2015年招生工作总结
2015/05/04 职场文书
九年级英语教学反思
2016/02/15 职场文书