selenium模拟登陆截屏保存验证码

上一篇文章讲到用selenium模拟登陆界面,然后人工输入验证码,这样增加了人的工作量,增加了处理时间,并且可能验证码输入错误,下面我通过截取验证码部分,然后通过图片识别方式获取验证码信息。

首先是截取当前的登陆界面,然后定位到验证码的位置截取验证码图片。我遇到的问题是相同的位置,有时候会遇到截取的图片没有验证码、者验证码模糊不清楚、验证码很小等问题。查找之后发现是截屏时,页面没有显示完全导致的。

用time.sleep(2)来推迟页面的截取时间。

import time
from selenium import webdriver
import os

from PIL import Image
import pytesseract
pytesseract.pytesseract.tesseract_cmd = 'mypath\\Tesseract-OCR\\tesseract.exe'

self.driver =webdriver.Chrome(CHROME_DRIVER) #初始化对象
self.driver.set_window_size(900, 900) #设置窗口大小

time.sleep(2)

self.driver.get_screenshot_as_file(os.path.join(BASE_DIR, 'veri.png'))#获取当前窗口截屏并保存在程序文件根目录

left = 700 #获取验证最左边位置
top = 350  #获取验证码上边位置
right = left + 50  #获取验证码右边位置
bottom = top + 20 #获取验证码下边位置

open_img = Image.open('veri.png')#打开屏幕截图
open_img = open_img.crop((left, top, right, bottom))#使用获取到的位置剪切图片
open_img.show()#显示图片


image = open_img.convert('L')              # 将验证码图片转换为灰度图(L表示灰度图)
threshold = 127      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值