Python selenium库学习使用实操三

时间:2024-10-13 07:12:52

系列文章目录

Python selenium库学习使用实操
Python selenium库学习使用实操二


文章目录

  • 系列文章目录
    • @[TOC](文章目录)
  • 前言
  • 一、文字验证码保存
  • 二、验证码识别
    • 1.引入库
    • 2.验证码识别
  • 总结

前言

国庆回来,接着搬砖,上回说到使用selenium进行自动登录和简单表单的自动填写,由于短时间内多次登录,触发了系统的图像验证码机制,不得不迫使我去学习下验证码识别了。


一、文字验证码保存

平台使用了文字验证码,看了下dom结构,发现是base64的图片,先将base64图片转换成文件。
我们可以看到一个标准的图片转成的base64:base64_str="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA********
需要注意的是,如果我们使用python的imgdata = base64.b64decode(image_base64)解码,image_base64是不包含base64_str的头部的,即从iVBOR***开始才是编码内容,所以正确的解码代码如下

def save_base64_image(image_base64, file_path):
    # 看看image_base64类型是不是正确的“bytes”类型
    print(type(image_base64))  
    # 解码图片
    head,context=image_base64.split(",")  # 将base64_str以“,”分割为两部分
    img_data = base64.b64decode(context)    # 解码时只要内容部分
    #将图片保存为文件
    with open("temp.jpg",'wb') as f:
        f.write(img_data)

二、验证码识别

1.引入库

该库名也是非常有趣 —— ddddocr(谐音带带弟弟OCR),Github地址:https://github.com/sml2h3/ddddocr

pip install ddddocr

2.验证码识别

def do_OCR(img_path):
    ocr = ddddocr.DdddOcr()
    with open(img_path, 'rb') as f:
        img_bytes = f.read()
    res = ocr.classification(img_bytes) 
    print(res)
    return res   

总结

`
以上就是文字验证码图像识别的简单操作。接着研究下拉选择框的使用。