某次我需要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)

推荐链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: