python+Selenium+Pytesseract登录时自动识别验证码
一直想试着使用python+selenium+pytesseract来做一下验证码识别。
按照网上提供的方法尝试了一下,大体的功能能实现。
(参考:https://www.jianshu.com/p/afcde49c57b7)
就是想吐槽一下,这个识别的成功率真是不高。。。。
补充两点:
一、识别出来的验证码,有时候包含空格或者特殊字符。
可以使用下面的正则表达式除去
import re
code = pytesseract.image_to_string(img)
code = re.sub(u"([^\u4e00-\u9fa5\u0030-\u0039\u0041-\u005a\u0061-\u007a])", "", code)
二、验证码正常一次是识别不出来,需要多识别几次。
可以使用while循环
while True:
# 清空验证码输入框
d.find_element_by_css_selector('input[placeholder="请输入验证码"]').clear()
# 找到验证码img标签,切图
img_code = d.find_element_by_id('authCode')
# 算出验证码的四个点,即验证