python使用PIL库将登陆验证码二阀值,调用百度识图接口baidu-aip进行验证码文字的获取,自动登录再也不怕遇到验证码登录啦
在使用selenium自动登录某个网站进行数据爬取的时候,在需要登录的时候都会遇到图片验证码的问题,下面给大家分享一下如何识别图片验证码。
思路:获取登录验证码图片>>>将验证码二阀值处理>>>图片交给百度AI识图>>>识别文字交给selenium进行自动登录
在开始之前,我们需要去百度AI平台注册一个账号,链接: https://ai.baidu.com/.这个只要注册个账号进去就可以了,然后点击控制台-文字识别
下面我们需要创建一个应用:
点进去一顿操作,这个不会可以度娘一下,就不多介绍了,我们只需要进去将AI平台的SDK接口文件下载下来就可以了,因为我使用是python语言,所以就用python的做介绍。
在使用python的SDK文件的时候,我们需要安装依赖的包baidu-aip 2.2.18.0 这个需要下载。
将刚才我们下载的SDK文件放到代码目录下面,这个要注意因为文件路径不对容易报错:
一切准备就绪我们就可以找一张验证码图片进行二阀值测试:
from aip import AipOcrfrom PIL import Image def image_black(): image = Image.open(file_path) # 打开图片文件 image = image.convert("L") threshold = 130 # 指定二值化的阈值,根据情况调 table = [] for i in range(256): if i < threshold: table.append(0) else: table.append(1) image = image.point(table, '1') # 由PIL将图片二值图片后,0代表黑色,1代表白色 # image.show() image.save(image_path)
通过上面的代码,将图片传进去让图片黑白化,这样处理过的话,进行百度识图的时候就可以更准确,在对于一些复杂的验证码图片处理再好不过了:
二值化的阀值可以根据图片进行调整,这里我使用的是130。
验证码图片处理完成后,我们就把这张图片交个AI识图,刚才我们下载了python的SDk文件,通过:
from aip import AipOcr
调用aip文件下面的一个AIPOcr类,使用这个的前提是把python的SDK文件放到你的工程下面,下面就是展示代码部分:
def baidu_ocr(picfile): #picfile图片文件的路径 APP_ID = '' # 这是你产品服务的appid API_KEY = '' # 这是你产品服务的appkey SECRET_KEY = '' # 这是你产品服务的secretkey client = AipOcr(APP_ID, API_KEY, SECRET_KEY) with open(picfile, 'rb') as f: img = f.read() message = client.basicAccurate(img) #高精度识别函数 for text in message.get('words_result'): data = text.get('words') print(data.replace(" ", ""))
这里的APP_ID、 API_KEY、SECRET_KEY是你在百度AI平台创建的一个应用对应的三个值,创建好填进去就OK了:
通过这两个函数,我们就可以将一张图片验证码的文字提取出来,当然有人会说,不用将图片进行二阀值,直接调用百度AI文字识别的接口,就可以获取图片验证码的文字了,这里我测试过了是可以的,但对于一些复杂色彩的验证码识别的准确度却降低了。
这里是终端打印出来的验证码文字,虽然简单的两个函数,但对于刚入门的我却花了好几天,希望对遇到这方面困扰的小伙伴有所帮助。
- Python调用百度AIP进行文字识别
- Python调用百度aip进行文字识别
- 使用python技术,调用百度智能云接口实现文字识别,实现快捷键截图后转化为文字存于剪切板,Ctrl+v可直接粘贴
- java实现自动识别验证码并自动填写提交(调用百度通用文字识别OCR接口+大图找小图之图像识别算法+模拟鼠标键盘动作)
- Python使用selenium实现网页用户名 密码 验证码自动登录功能
- 使用python实现baidu hi自动登录的代码
- Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
- python selenium chrome使用代理自动登录,并可以远程调用
- Python:新浪微博API的使用及安全的模拟登陆自动获取code值
- Python+Selenium+PIL+Tesseract真正自动识别验证码进行一键登录
- jmeter 使用时间戳去redis获取验证码实现有验证码登录接口测试
- python 微信机器人自动聊天+回怼表情包+Adidas公众号自动抽签 四、获取表情包中的文字并进行同类型回怼
- 如何使用python3调用openstack keystone identity REST api接口获取X-AUTH-TOKEN
- 如何使用python自动登录路由器且获取页面内容
- Python使用selenium实现网页用户名 密码 验证码自动登录功能
- Python+Selenium+PIL+Tesseract真正自动识别验证码进行一键登录
- python模拟登录新浪微博自动获得调用新浪api所需的code
- Spring AOP进行日志记录,管理 (使用Spring的拦截器功能获取对action中每个方法的调用情况,在方法调用前
- 使用 python脚本获取函数调用关系
- python调用caffe接口进行classify时提示Mean shape incompatible with input shape错误的解决方法