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 httplib,smtplib使用方法
Sep 06 Python
使用Python判断质数(素数)的简单方法讲解
May 05 Python
好用的Python编辑器WingIDE的使用经验总结
Aug 31 Python
pandas 选择某几列的方法
Jul 03 Python
python实现矩阵打印
Mar 02 Python
python 使用while写猜年龄小游戏过程解析
Oct 07 Python
浅析python内置模块collections
Nov 15 Python
关于Python 中的时间处理包datetime和arrow的方法详解
Mar 19 Python
python如何判断IP地址合法性
Apr 05 Python
Python requests模块cookie实例解析
Apr 14 Python
python 5个顶级异步框架推荐
Sep 09 Python
一文读懂python Scrapy爬虫框架
Feb 24 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生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
PHP token验证生成原理实例分析
2019/06/05 PHP
PHP dirname功能及原理实例解析
2020/10/28 PHP
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
JavaScript创建命名空间(namespace)的最简实现
2007/12/11 Javascript
javascript 尚未实现错误解决办法
2008/11/27 Javascript
让网页根据不同IE版本显示不同的内容
2009/02/08 Javascript
jqeury eval将字符串转换json的方法
2011/01/20 Javascript
JQuery实现倒计时按钮具体方法
2013/11/14 Javascript
AngularJS基础学习笔记之简单介绍
2015/05/10 Javascript
js实现模拟银行卡账号输入显示效果
2015/11/18 Javascript
js简单判断移动端系统的方法
2016/02/25 Javascript
jquery获取复选框checkbox的值实现方法
2016/05/30 Javascript
简单了解JavaScript操作XPath的一些基本方法
2016/06/03 Javascript
Bootstrap中data-target 到底是什么
2017/02/14 Javascript
详谈表单格式化插件jquery.serializeJSON
2017/06/23 jQuery
详谈ES6中的迭代器(Iterator)和生成器(Generator)
2017/07/31 Javascript
Node.js学习之查询字符串解析querystring详解
2017/09/28 Javascript
基于express中路由规则及获取请求参数的方法
2018/03/12 Javascript
详解vue axios二次封装
2018/07/22 Javascript
layer父页获取弹出层输入框里面的值方法
2019/09/02 Javascript
vue实现商城秒杀倒计时功能
2019/12/12 Javascript
[01:04]DOTA2:伟大的Roshan雕塑震撼来临
2015/01/30 DOTA
python time()的实例用法
2020/11/03 Python
Django-silk性能测试工具安装及使用解析
2020/11/28 Python
项目管理计划书
2014/01/09 职场文书
大学活动总结范文
2014/04/29 职场文书
导师就业推荐信范文
2014/05/22 职场文书
模范教师材料大全
2014/12/16 职场文书
社区公民道德宣传日活动总结
2015/03/23 职场文书
导游词之镜泊湖
2019/12/09 职场文书
JavaScript函数柯里化
2021/11/07 Javascript
mysql查询结果实现多列拼接查询
2022/04/03 MySQL
sql server偶发出现死锁的解决方法
2022/04/10 SQL Server
MySQL索引 高效获取数据的数据结构
2022/05/02 MySQL