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多线程实例教程
Sep 06 Python
给Python中的MySQLdb模块添加超时功能的教程
May 05 Python
python通过加号运算符操作列表的方法
Jul 28 Python
python flask解析json数据不完整的解决方法
May 26 Python
python代理工具mitmproxy使用指南
Jul 04 Python
Python读写文件模式和文件对象方法实例详解
Sep 17 Python
python图形用户接口实例详解
Dec 16 Python
Python字符串hashlib加密模块使用案例
Mar 10 Python
Python如何实现自带HTTP文件传输服务
Jul 08 Python
python小技巧——将变量保存在本地及读取
Nov 13 Python
利用Python将多张图片合成视频的实现
Nov 23 Python
pandas 按日期范围筛选数据的实现
Feb 20 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/10/09 PHP
php入门学习知识点七 PHP函数的基本应用
2011/07/14 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
2015/02/12 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
简单谈谈PHP中的Reload操作
2016/12/12 PHP
PHP PDOStatement::getAttribute讲解
2019/02/01 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
提高网站信任度的技巧
2008/10/17 Javascript
关于取不到由location.href提交而来的上级页面地址的解决办法
2009/07/30 Javascript
高亮显示web页表格行的javascript代码
2010/11/19 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
2014/06/20 Javascript
优化Node.js Web应用运行速度的10个技巧
2014/09/03 Javascript
常用的JavaScript WEB操作方法分享
2015/02/28 Javascript
jQuery实现拖拽效果插件的方法
2015/03/23 Javascript
简单实现异步编程promise模式
2015/07/31 Javascript
浅析JavaScript回调函数应用
2016/05/22 Javascript
Angular实现购物车计算示例代码
2017/02/21 Javascript
vue-router命名路由和编程式路由传参讲解
2019/01/19 Javascript
浅谈js闭包理解
2019/03/28 Javascript
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
JS+canvas五子棋人机对战实现步骤详解
2020/06/04 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
Python实现Linux下守护进程的编写方法
2014/08/22 Python
Python实现小数转化为百分数的格式化输出方法示例
2017/09/20 Python
pandas 两列时间相减换算为秒的方法
2018/04/20 Python
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
如何使用python切换hosts文件
2020/04/29 Python
你不知道的葡萄干处理法、橙蜜处理法、二氧化碳酵母法
2021/03/17 冲泡冲煮
CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大
2012/12/10 HTML / CSS
美国最流行的男士时尚网站:Touch of Modern
2018/02/05 全球购物
母婴店促销方案
2014/03/05 职场文书
优秀教师感人事迹材料
2014/05/04 职场文书
2014年小学德育工作总结
2014/12/05 职场文书
2014年度考核工作总结
2014/12/24 职场文书
高中语文教材(文学文化常识大全一)
2019/08/13 职场文书
 Python 中 logging 模块使用详情
2022/03/03 Python