python3定位并识别图片验证码实现自动登录功能
作者:茶几mzcy 发布时间:2022-07-23 13:23:59
标签:python,图片验证码,自动登录
会用到的库的
1、selenium的webdriver
2、tesserocr或者pytesseract进行图像识别
3、pillow的Image进行图片处理
from selenium import webdriver
import tesserocr
from PIL import Image
tesserocr的安装.
获取验证码图片方法1:
def get_code_image(file_name):
driver.save_screenshot(file_name) # 截取整个屏幕并保存
code_element = driver.find_element_by_class_name("verify_code_img___1Mei_") # 定位到验证码元素
left = code_element.location['x'] # 定位到截图位置
top = code_element.location['y']
right = code_element.size['width'] + left
bottom = code_element.size['height'] + top
im = Image.open(file_name) # 从文件读取截图,截取验证码位置再次保存
img = im.crop((left, top, right, bottom))
img.save(file_name)
return file_name
获取验证码图片方法2:
def get_code_image(file_name):
code_element = driver.find_element_by_class_name("verify_code_img___1Mei_") # 定位到验证码元素
code_element.screenshot(file_name)
注:此方法截图时屏幕会闪动,可能引发bug,如下图,目前没有解决
处理验证码图片
def deal_code_image(file_name):
image = Image.open(file_name)
# image.show() #查看处理前的图片
# 处理图片去除干扰
# 将图片转化为灰度图像
image = image.convert('L')
threshold = 90 # 设置临界值,临界值可调试
table = []
for i in range(256):
if i < threshold:
table.append(0)
else:
table.append(1)
image = image.point(table, '1')
# image.show() #查看处理后的图片
# 1:使用tesseract库识别图片中的验证码
# res = tesserocr.image_to_text(image)
# 2:使用pytesseract库识别图片中的验证码
res = pytesseract.image_to_string(image)
# print(res) #查看识别出来的文案
res = res.replace(" ", "") #去除结果中的空格
return res
处理前的图片,有干扰,无法识别
处理后的图片,基本可以识别
识别结果不一定准确,如果验证码输入错误,可以点击换一张图片再次识别,多次尝试,本次不做说明
来源:https://blog.csdn.net/zloveyll/article/details/113246855


猜你喜欢
- 在工控应用上,返回的数据经常会以二进制的形成存储,而这些二进制数据又是以每4个bit表示一个十六进制的数据内容。解析的时候,往往是一个字节(
- PyAutoGUI 不知道你有没有用过,它是一款用Python自动化控制键盘、鼠标的库。但凡是你不想手动重复操作的工作都可以用这个库来解决。
- 前言在SQL Server数据库中,有时候会建立一些Windows认证的账号(域账号),例如,我们公司习惯给开发人员和Support同事开通
- 前言优化随机森林算法,正确率提高1%~5%(已经有90%+的正确率,再调高会导致过拟合)论文当然是参考的,毕竟出现早的算法都被人研究烂了,什
- 本博客实现将自己训练保存的ckpt模型转换为pb文件,该方法适用于任何ckpt模型,当然你需要确定ckp
- substr(string ,1,3) 函数解读:取string 中重左往右取3字长的字符串。结果为:str从右往左呢?应该有另一个函数来提
- 本文介绍urllib库在不同版本的Python中的变动,并以Python3.X讲解urllib库的相关用法。urllib库对照速查表Pyth
- 互联网充斥着枯燥的设计,惠普、IBM、戴尔、微软,以及其他数不尽的网站(相似的布局,相似的配色)。可能有人会说通过这样一种标准化的界面可以使
- 我的Mysql中已经有了项目需要使用的相关数据库,现在需要通过django来获取Mysql里的数据并使用,下面记录配置django与mysq
- 一、基本使用selenium 的基本使用步骤:打开浏览器;获取浏览器页面的特定内容;控制浏览器页面上的控件,如向一个文本框中输入一个字符串;
- 效果图自定义一个Item新建一个QWidget对象在QWidget内添加Layout在Layout内添加要的控件为QWidget设置Layo
- 前言因为之前一直忽略的就是所有语言中关于位操作,觉得用处并不多,可能用到也非常简单的用法,但是其实一直忽略的是它们的用处还是非常大的,下面先
- python爬虫主要用两个库:Urllib和BeautifulSoup4。一个用来爬取网页,一个用来解析网页。Urllib是Python内置
- 【1】MySQL中的日期时间类型MySQL中常用的几种时间类型有:date、datetime、time、year、timestamp数据类型
- 前言为了数据安全,数据库需要定期备份,这个大家都懂,然而数据库备份的时候,最怕写操作,因为这个最容易导致数据的不一致,松哥举一个简单的例子大
- asp在线备份sql server数据库: 1、备份sqlserver 代码如下:<% SQL="backup&n
- 自今年1月份以Jetbrain公司严厉打击旗下开发工具产品(如:IntelliJ IDEA、WebStorm、PyCharm等)的盗版破解以
- 前端开发部门在壮大,人员在增加,技术在进步。CSSer虽然不能代表前端开发团队,但CSSer是前端开发中非常重要的组成部分。一、文档写程序的
- 目录前言示例文件文件编码空值日期错误函数映射方法1:直接使用labmda表达式方法二:使用自定义函数方法三:使用数值字典映射总结前言本文是给
- 不用切图,只要设置基本的 图片及其属性即可!用鼠标右键控制图片翻转!<style>*{ FONT-SIZE: 12px; }se