美文网首页
python识别图形验证码2018-06-26

python识别图形验证码2018-06-26

作者: 大树_20e9 | 来源:发表于2018-06-26 10:41 被阅读0次

    1.需要导入以下包(pytesseract.src里面应该要用notepad++编辑Tesseract-OCR路径,如我的第26行: tesseract_cmd = 'C:\Program Files (x86)\Tesseract-OCR\\tesseract')

    from PILimport Image

    from pytesseract.srcimport pytesseract

    2.代码实现如下:

     # 截取当前网页,该网页有我们需要的验证码

    driver.save_screenshot('D://aa.png')

    # 定位验证码

    imgelement = driver.find_element_by_xpath(self.IMAGE_CODE_PATH)

    # 获取验证码x,y轴坐标

    location = imgelement.location

    # 获取验证码的长宽

    size = imgelement.size

    # 写成我们需要截取的位置坐标

    rangle = (int(location['x']), int(location['y']), int(location['x'] + size['width']), int(location['y'] + size['height']))

    # 打开截图

    i = Image.open("D://aa.png")

    # 使用Image的crop函数,从截图中再次截取我们需要的区域

    frame4 = i.crop(rangle)

    frame4.save('D://frame4.png')

    img = Image.open('D://frame4.png')

    # 锐化图片,这里很关键

    im = img.point(lambda i: i *2.5)

    BB = pytesseract.image_to_string(im)

    print(u"识别的验证码为:" + BB)

    3.用try……except Exception取识别出来的0,2,4,6位,为防止错误,如识别不对,重新执行识别图形码方法。

    try:

        for iin range(0, 7, 2):

        driver.find_element_by_xpath(self.VERIF_CODE).send_keys(BB[i])

        sleep(3)

        driver.find_element_by_xpath(self.SUMIT).click()

        sleep(3)

    except Exception:

        driver.close()

        self.get_streen(user_name,pwd)

    4.end

    相关文章

      网友评论

          本文标题:python识别图形验证码2018-06-26

          本文链接:https://www.haomeiwen.com/subject/wlspyftx.html