python selenium验证码处理

某次我需要selenium处理验证码的时候,发现网上大部分文章都是对验证码的部分进行截屏然后抠图,然后OCR进行处理,我自己认为这种截屏抠图方式比较繁琐,于是我直接获取验证码base64数据或者bytes数据,然后OCR解析进行其他处理。

示例代码如下:

import undetected_chromedriver.v2 as uc
from selenium.webdriver.common.by import By
import ddddocr
import time


if __name__ == '__main__':
    browser = uc.Chrome()
    browser.get("https://support.huawei.com/enterprise/ecareWechat")
    # 隐式等待
    browser.implicitly_wait(5)
    # 处理内嵌html
    element = browser.find_element(by=By.CLASS_NAME, value="wechat")
    browser.switch_to.frame(element)
    # 定位到图片元素
    img = browser.find_element(by=By.XPATH, value='//*[@id="imgObj"]')
    # 获取图片bytes数据
    # data = img.screenshot_as_png
    # 获取图片base64数据
    data = img.screenshot_as_base64
    ocr = ddddocr.DdddOcr()
    # 进行验证码识别
    text = ocr.classification(img_base64=data)  # img_bytes=data 这是bytes数据传入时,但在pycharm 会冒黄,我也不清楚为啥
    print(text)
    time.sleep(5)
    browser.quit()

这样就能得到验证码字符串了

运行结果:

ddddocr python开源免费的OCR文字识别库

下载:pip install ddddocr

undetected_chromedriver      selenium防止被浏览器识别的github上的开源的包

下载:pip install undetected_chromedriver -i https://pypi.douban.com/simple  防selenium被识别(也会自动下载匹配浏览器selenium对应版本的chromedriver.exe)

  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值