selenium中验证码识别简单封装

本文介绍了一种自动化处理网站验证码的方法,通过截取验证码图片并调用第三方API进行识别,同时提供了生成随机字符串和管理浏览器Cookies的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 先简单封装一下,后续也可将定位元素方法封装,直接调用方法,

import random
import string
import time
import pickle

from lib.ShowapiRequest import ShowapiRequest
from PIL import Image
import os

#   对识别验证码进行封装
def get_code(driver,xpath):
    #   获取验证码图片
    t = time.time()
    #   保存到当前项目下Screen下
    path = os.path.dirname(os.path.dirname(__file__))+'\\Screen'
    picture_name1=path +'\\'+str(t)+'.png'
    driver.save_screenshot(picture_name1)
    code = driver.find_element_by_xpath(xpath)
    print(code.location)
    left = code.location['x']
    top = code.location['y']
    right = code.size['width'] + left
    height = code.size['height'] + top
    dpr = driver.execute_script('return window.devicePixelRatio')
    print(dpr)
    im = Image.open(picture_name1)
    #   抠验证码区域图
    code_img = im.crop((left * dpr, top * dpr, right * dpr, height * dpr))
    picture_name2= path + '\\' + str(t) + '.png'
    #   picture_name2 = str('yzm2') + '.png'
    code_img.save(picture_name2)
    #   调用验证码识别api
    r = ShowapiRequest("http://route.showapi.com/184-4", "xxx", "xxx")
    r.addFilePara("image", picture_name2)
    r.addBodyPara("typeId", "34")
    r.addBodyPara("convert_to_jpg", "0")
    r.addBodyPara("needMorePrecise", "0")
    res = r.post()
    text = res.json()['showapi_res_body']
    code_text = text['Result']
    return code_text

#   生成随机字符串
def gen_random_str():
    rand_str = ''.join(random.sample(string.ascii_letters+string.digits,8))
    return rand_str

#   保存cookies
def save_cookie(driver,path):
    with open(path,'wb') as filehandler:
        cookies = driver.get_cookies()
        print(cookies)
        pickle.dump(cookies,filehandler)

#   加载cookies
def load_cookies(driver,path):
    with open(path,'rb') as cookiesfile:
        cookies = pickle.load(cookiesfile)
        for cookie in cookies:
            driver.add_cookie(cookie)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C_TestMG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值