zoukankan      html  css  js  c++  java
  • Python验证码登录(Tesseract安装配置)

    1.安装py库:pytesseract,PIL

    pip install pytesseract
    pip install PILLOW
    

     如果安装时,出现权限不足:

    pip install --user pytesseract
    pip install --user PILLOW
    

    2.tesseract程序下载安装

    2.1 tessercat下载地址:https://digi.bib.uni-mannheim.de/tesseract/        //请依据自己的操作系统下载exe文件安装

    2.2 环境变量配置

    用户变量,系统变量都添加:PATH     C:Program Files (x86)Tesseract-OCR;    //这是tesseract的安装目录

    系统变量添加:TESSDATA_PREFIX    C:Program Files (x86)Tesseract-OCR     

    //有的博文写到“TESSDATA_PREFIX”目录需要到tessdata,但是我电脑配置到tessdata就会多一级tessdata目录,命令测试时会找不到,所以这里自己依据调试哪个OK用哪个~

    2.3 验证是否安装/配置成功

    在需识别的图片目录下执行命令:tesseract test.png output_1 –l eng

    test.png:徐识别的文件

    output_1:识别后存入的文件名(默认txt格式)

    -l eng:语言包 英文

    3.pycharm验证码登录

    验证码图片清晰,不去需要背景去噪(干扰线),转换为灰度图

    # 验证码登录
    import time
    from PIL import ImageEnhance
    from selenium import webdriver
    # 避免出现系统错误:[WinError 2] 系统找不到指定的文件
    try:
        import Image
    except ImportError:
        from PIL import Image
    import pytesseract
    pytesseract.pytesseract.tesseract_cmd = r'C:/Program Files (x86)/Tesseract-OCR/tesseract.exe'
    
    # 打开浏览器
    url = "http://XXX.XX.XX.XX:XXX/SPMTest/login.html"
    browser = webdriver.Chrome()
    browser.implicitly_wait(10)
    browser.maximize_window()
    browser.get(url)
    
    # 用户元素
    userElement = browser.find_element_by_id("loginname")
    passElement = browser.find_element_by_id("password1")
    codeElement = browser.find_element_by_id("code")
    lgButton = browser.find_element_by_id("login_value")
    
    # 验证码截取+识别(页面验证码地址不是固定连接,所以采用截图方式)
    # 截取屏幕内容,保存到本地
    browser.save_screenshot("D://PyDemo/01.png")
    # 打开截图,获取验证码位置,截取保存验证码
    ran = Image.open("D://PyDemo/01.png")
    box = (1165, 380, 1240, 415) # 获取验证码位置,手动定位(左,上,右,下)--验证码图片的绝对定位
    ran.crop(box).save("D://PyDemo/02.png")
    # 获取验证码图片,读取验证码
    code = pytesseract.image_to_string(Image.open('D://PyDemo/02.png'))
    print(code)
    
    # 输入数据登录
    userElement.send_keys('tt')
    passElement.send_keys('1234')
    codeElement.send_keys(code)
    time.sleep(3)
    lgButton.click()
    

      

    记录下,这个系统的登录脚本,特殊情况~(场景:密码输入框有两个id处理.....

      

  • 相关阅读:
    STL
    STL
    Python编程-基础知识-条件判断
    STL
    springmvc 自定义注解
    Springboot 入口类及其实现自动配置的原理
    Java RestTemplate post请求传递参数遇到的坑
    Spring中@Autowire的底层原理解析(附详细源码阅读步骤)
    非常详细的SpringBoot-自动装配原理
    为何一个@LoadBalanced注解就能让RestTemplate拥有负载均衡的能力?
  • 原文地址:https://www.cnblogs.com/bf-blackfish/p/10967396.html
Copyright © 2011-2022 走看看