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实现HTTP协议下的文件下载方法总结
Apr 20 Python
Python编程中对super函数的正确理解和用法解析
Jul 02 Python
解决python 输出是省略号的问题
Apr 19 Python
使用Python通过win32 COM实现Word文档的写入与保存方法
May 08 Python
关于python写入文件自动换行的问题
Jun 23 Python
Python多图片合并PDF的方法
Jan 03 Python
python 阶乘累加和的实例
Feb 01 Python
对Python3 pyc 文件的使用详解
Feb 16 Python
python对象与json相互转换的方法
May 07 Python
使用python实现回文数的四种方法小结
Nov 24 Python
在pycharm中实现删除bookmark
Feb 14 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
?生?D片??C字串
2006/12/06 PHP
PHP 裁剪图片成固定大小代码方法
2009/09/09 PHP
PHP中防止直接访问或查看或下载config.php文件的方法
2012/07/07 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
jquery.ui.draggable中文文档(原文翻译)
2013/11/15 Javascript
运用JQuery的toggle实现网页加载完成自动弹窗
2014/03/18 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
node.js中的path.basename方法使用说明
2014/12/09 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
jQuery图片轮播滚动切换代码分享
2020/04/20 Javascript
总结JavaScript中布尔操作符||与&&的使用技巧
2015/11/17 Javascript
BootStrapValidator初使用教程详解
2017/02/10 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
详解如何更好的使用module vuex
2019/03/27 Javascript
学习 Vue.js 遇到的那些坑
2021/02/02 Vue.js
仅用50行代码实现一个Python编写的计算器的教程
2015/04/17 Python
对python中for、if、while的区别与比较方法
2018/06/25 Python
python绘制热力图heatmap
2020/03/23 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
2019/03/11 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
python绘制BA无标度网络示例代码
2019/11/21 Python
基于Keras中Conv1D和Conv2D的区别说明
2020/06/19 Python
Android Q之气泡弹窗的实现示例
2020/06/23 Python
五分钟带你搞懂python 迭代器与生成器
2020/08/30 Python
python识别验证码的思路及解决方案
2020/09/13 Python
python实现简单猜单词游戏
2020/12/24 Python
css3中transition属性详解
2014/09/02 HTML / CSS
PHP如何删除一个Cookie值
2012/11/15 面试题
CNC数控操作工岗位职责
2013/11/19 职场文书
美发店5.1活动方案
2014/01/24 职场文书
校园之星获奖感言
2014/01/29 职场文书
干部职工纪律作风整改措施思想汇报
2014/10/11 职场文书
2015年教师新年寄语
2014/12/08 职场文书
党员发展大会主持词
2015/07/03 职场文书
《走遍天下书为侣》教学反思
2016/02/22 职场文书
了解Kubernetes中的Service和Endpoint
2022/04/01 Servers