selenium登录验证码处理

获取验证码

获取验证码使用selenium中的screenshot方法对验证码图片元素进行截图并保存。

wd = webdriver.Chrome('chromedriver.exe')

imag = wd.find_element_by_xpath("img")
imag.screenshot("code.png")

识别验证码

验证码识别使用pytesseract实现。
pytesseract是一款用于光学字符识别(OCR)的python工具,即从图片中识别出和“读取”其中嵌入的文字。pytesseract是对Tesseract-OCR的一层封装,同时也可以单独作为对Tesseract引擎的调用脚本,支持使用PIL库(Python Imaging Library)读取各种图片文件类型,包括jpeg、png、gif、bmp、tiff等其它格式。作为脚本使用时,pytesseract将打印识别出的文字,而不是将其写入文件。

首先,安装pytesseract:

pip3 install pytesseract -i https://pypi.tuna.tsinghua.edu.cn/simple/

其次需要安装Google Tesseract

Tesseract OCR github地址:https://github.com/tesseract-ocr/tesseract
Windows Tesseract下载地址:https://digi.bib.uni-mannheim.de/tesseract/
Mac和Linux安装方法参考:https://tesseract-ocr.github.io/tessdoc/Installation.html

下载后进行安装,安装时注意保存安装位置,用于设置环境变量,同时注意选择需要使用的语言,如下图:
选择需要下载的语言
其他步骤next即可。
安装完成后,将安装目录(C:\Program Files\Tesseract-OCR)添加到PATH环境变量中。命令行窗口输入:tesseract ,查看是否安装成功。

安装成功
安装成功之后,使用pytesseract提取图片中出现的文字

code = pytesseract.image_to_string(Image.open("code.png"))[0:4]

注意截取字符串的长度,先保证输入验证码的长度是ok的。

提交验证码

提交验证码,当然是把识别出来的字符串填入input框里,点击提交按钮

wd.find_element_by_id("CodeInput").send_keys(code)
wd.find_element_by_xpath('/html/body/button').click()

but,unfortunately,pytesseract识别出来的验证码并不是百分百正确的,因此,填写了验证码,点了按钮,你可能收到的是验证码错误的提示。
在此,我使用了循环判断,如果点击提交之后,页面没有发生跳转,说明登录失败了,那么浏览器导航栏的url就没有发生变化,如果没发生变化,就重新填写用户名、密码、识别验证码,直至登录成功发生跳转。

#记录一下当前的url
current_url = wd.current_url
while True:
	#判断url有没有发生变化
	if current_url == wd.current_url:
		#填密码,识别验证码
	else#进入下一步
		break

在我的使用过程中,这个方法行得通,有更好地方法,跪请私信我。

参考链接

Tesseract 下载安装https://blog.csdn.net/u010698107/article/details/121736386

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值