Selenium 实现验证码识别登录详解


一、打开网站并设置浏览器窗口
首先,打开浏览器并将窗口最大化,以确保每次截取的图片都是相同的大小:

python

from selenium import webdriver

url = "https://www.example.com"
driver = webdriver.Chrome()
driver.get(url)
driver.maximize_window()
二、截取带有验证码的网页内容
截取当前屏幕内容,并保存到本地:

python

driver.save_screenshot("H://test/01.png")
三、识别图片验证码
使用 pytesseract 识别图片验证码
定位验证码在图片中的位置并截取:
python

from PIL import Image, ImageEnhance
import pytesseract

image = Image.open("H://test/01.png")
box = (564, 395, 643, 423)  # 验证码位置(左,上,右,下)
captcha_image = image.crop(box)
captcha_image.save("H://test/02.png")
图像增强并识别验证码:
python

# 图像增强,二值化
enhanced_image = ImageEnhance.Contrast(captcha_image).enhance(2.0)
enhanced_image.save("H://test/03.png")
# 识别验证码
captcha_text = pytesseract.image_to_string(enhanced_image).strip()
print(captcha_text)
使用 ddddocr 识别图片验证码
读取并识别图片:
python

import ddddocr

ocr = ddddocr.DdddOcr()
with open('./images/code1.png', 'rb') as f:
    img_bytes = f.read()
    captcha_text = ocr.classification(img_bytes)
    print(f'验证码为:{captcha_text}')
四、输入账号、密码和验证码
定位账号、密码和验证码输入框,并输入相关内容:

python

username_input = driver.find_element_by_id("username")
password_input = driver.find_element_by_id("password_1")
captcha_input = driver.find_element_by_id("user_ck")

username_input.send_keys('your_username')
password_input.send_keys('your_password')
captcha_input.send_keys(captcha_text)更多内容联系1436423940
五、点击登录按钮
定位并点击登录按钮:


login_button = driver.find_element_by_name("yt0")
login_button.click()
六、关闭浏览器
最后,关闭浏览器:

python

driver.quit()
七、详细解释识别过程
使用 pytesseract 识别
截取图片:首先,通过 save_screenshot 方法截取整个浏览器窗口的截图,然后通过 Image 库打开这张截图,定位到验证码的位置,使用 crop 方法截取验证码部分。

图像处理:为了提高识别率,通过 ImageEnhance.Contrast 对比度增强方法对截取的验证码图像进行处理,增强对比度使得验证码更加清晰。

验证码识别:通过 pytesseract 的 image_to_string 方法,将图像转换为字符串,即识别出验证码。

使用 ddddocr 识别
读取图片:使用 open 方法以二进制方式读取保存在本地的验证码图片。

识别验证码:使用 ddddocr 的 classification 方法对读取的二进制图片数据进行识别,获取验证码字符串。

八、问题和解决方案
pytesseract 报错解决方案
在使用 pytesseract 识别图片时,如果报错 tesseract-ocr 相关信息,可以通过 tesseract-ocr 下载 页面下载并安装 tesseract-ocr。

打开 pytesseract.py 文件,找到 tesseract_cmd,将其设置为 tesseract-ocr 的安装路径:

python

tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
这样即可解决 pytesseract 的报错问题。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值