zoukankan      html  css  js  c++  java
  • yzmsb_test.py

    识别诺诺金服页面的验证码,并自动登录到后台。

     1 #导包
     2 from selenium import webdriver
     3 from PIL import Image, ImageDraw
     4 from time import sleep
     5 import pytesseract
     6 #定义浏览器句柄,赋值url为诺诺金服后台地址
     7 driver = webdriver.Chrome()
     8 driver.implicitly_wait(10)  #隐式等待10s
     9 url = 'https://gl.axnjf.com/Contents/global/login/login.jsp'
    10 #窗口最大化
    11 driver.maximize_window()
    12 driver.get(url)
    13 # 诺诺金服后台页面截取验证码,代码如下:
    14 driver.save_screenshot('E:/test_nuonuojinfu/step_01.png')
    15 #定位验证码
    16 imgelement = driver.find_element_by_xpath('//*[@id="img_validator"]')
    17 #获取验证码x,y轴坐标
    18 location = imgelement.location
    19 #获取验证码的长宽
    20 size = imgelement.size
    21 #写成我们需要截取的位置坐标
    22 rangle = (int(location['x']), int(location['y']), int(location['x']+size['width']), int(location['y']+size['height']))
    23 i = Image.open('E:/test_nuonuojinfu/step_01.png')
    24 #二次截图
    25 frame4 = i.crop(rangle)
    26 #二次截图后命名
    27 frame4.save('E:/test_nuonuojinfu/step_02.png')
    28 print('二次截图成功!')
    29 
    30 #对截取后的验证码二值化,代码如下:
    31 # 二值数组
    32 t2val = {}
    33 def twoValue(image, G):
    34     for y in range(0, image.size[1]):
    35         for x in range(0, image.size[0]):
    36             g = image.getpixel((x, y))
    37             if g > G:
    38                 t2val[(x, y)] = 1
    39             else:
    40                 t2val[(x, y)] = 0
    41 
    42 def saveImage(filename, size):
    43     image = Image.new("1", size)
    44     draw = ImageDraw.Draw(image)
    45     for x in range(0, size[0]):
    46         for y in range(0, size[1]):
    47             draw.point((x, y), t2val[(x, y)])
    48     image.save(filename)
    49 
    50 path = 'E:/test_nuonuojinfu/step_02.png'
    51 image = Image.open(path)
    52 image = image.convert('L')
    53 twoValue(image, 125)
    54 path1 = 'E:/test_nuonuojinfu/step_03.jpg'
    55 saveImage(path1, image.size)
    56 print("返回信息:验证码到手,增强成功,春哥附体,定能识别!")
    57 #将处理后的验证码用Tesseract识别,代码如下:
    58 #添加pytesseract参数变量
    59 pytesseract.pytesseract.tesseract_cmd= "C:Program Files (x86)Tesseract-OCR/tesseract.exe"
    60 tessdata_dir_config = '--tessdata-dir "C:Program Files (x86)Tesseract-OCR/tessdata" '
    61 #打开需要识别的验证码图片
    62 image1 = Image.open("E:/test_nuonuojinfu/step_03.jpg")
    63 #识别验证码,赋值变量为code
    64 print('开始识别二维码,请等待...')
    65 code = pytesseract.image_to_string(image1)
    66 #打印识别后的验证码
    67 print('验证码:' + str(code))
    68 #拿到验证码后,进行登录操作,代码如下:
    69 driver.find_element_by_xpath('//*[@id="username"]').send_keys("nbiaabc")  #输入账号
    70 driver.find_element_by_xpath('//*[@id="password"]').send_keys("fBmhicc")  #输入密码
    71 #输入拿到的验证码
    72 driver.find_element_by_xpath('//*[@id="validator"]').send_keys(code)  #输入验证码
    73 # 点击登录按钮
    74 driver.find_element_by_xpath('//*[@id="button"]').click()
    75 sleep(1)
    76 driver.quit()
  • 相关阅读:
    四则运算题目生成器
    个人博客作业Week1
    M1/M2项目阶段总结
    个人博客作业week7
    个人博客作业—2
    第一周个人博客作业
    关于生成四则运算式
    个人博客作业week7
    第二次博客作业
    关于webservice大数据量传输时的压缩和解压缩
  • 原文地址:https://www.cnblogs.com/chenshengkai/p/11676352.html
Copyright © 2011-2022 走看看