91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python完全識別驗證碼自動登錄的示例分析

發布時間:2021-07-16 14:05:13 來源:億速云 閱讀:126 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關Python完全識別驗證碼自動登錄的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

1、直接貼代碼

#!C:/Python27
#coding=utf-8
 
 
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from pytesser import *
from PIL import Image,ImageEnhance,ImageFilter
from selenium.common.exceptions import NoSuchElementException,TimeoutException
import os,time
 
 
 
 
def before():
 
 
  driver.get(src)
 
 
  time.sleep(1)
 
 
  driver.maximize_window() # 瀏覽器全屏顯示
 
 
  print ('\n瀏覽器全屏顯示 ...')
 
 
 
 
 
 
def Convertimg():
  
  imglocation = ("//*[@id='loginForm']/div[4]/div[2]/img[1]")
  
  #下載驗證碼圖片保存到本地
  driver.save_screenshot('E:\\pythonScript\\Codeimages\\code.png')
  
  #打開本地圖片
  im = Image.open('E:\\pythonScript\\Codeimages\\code.png')
 
 
  left = driver.find_element_by_xpath(imglocation).location['x']
  top = driver.find_element_by_xpath(imglocation).location['y']
  right = driver.find_element_by_xpath(imglocation).location['x'] + driver.find_element_by_xpath(imglocation).size['width']
  bottom = driver.find_element_by_xpath(imglocation).location['y'] + driver.find_element_by_xpath(imglocation).size['height']
 
 
  im = im.crop((left, top, right, bottom))
 
 
  im.save('E:\\pythonScript\\Codeimages\\screenshot.png')
 
 
  print u"\n保存驗證碼圖片完成"
 
 
  #移除截屏的圖片
 
 
  os.remove('E:\\pythonScript\\Codeimages\\code.png')
 
 
  print u"\n刪除截屏圖片完成"
 
 
  #處理驗證碼圖片
  src = ('E:\\pythonScript\\Codeimages\\screenshot.png')
 
 
  #調用裁剪圖片方法
  Cutedge(src)
 
 
  #移除截屏的圖片
  os.remove('E:\\pythonScript\\Codeimages\\screenshot.png')
  #灰化圖片處理
  im = Image.open('E:\\pythonScript\\Codeimages\\CutedgeImage.png')
  
  imgry = im.convert('L')
  #二值化處理
 
 
  threshold = 100
  table = []
  for i in range(256):
    if i < threshold:
      table.append(0)
    else:
      table.append(1)
  out = imgry.point(table, '1')
 
 
  out.save('E:\\pythonScript\\Codeimages\\rgb.png')
 
 
  #vcode = pytesseract.image_to_string(out)
 
 
  #print (vcode)
 
 
  txtcode = image_to_string(out)
 
 
  print u"\n識別出驗證碼文字為:",image_to_string(out)
 
 
  print len(txtcode.strip())
 
 
  print
 
 
  if len(txtcode.strip()) == 4:
 
 
      print u"長度相等"
               
  else:
      print u"長度不相等,退出"
      
      driver.quit()
 
 
  #輸入用戶名和密碼
  driver.find_element_by_id("username").send_keys("123456")
 
 
  driver.find_element_by_id("password").send_keys("123456")
 
 
  time.sleep(2)
 
 
  #對文本框輸入驗證碼值
  driver.find_element_by_id("verifyCode").send_keys(txtcode.strip())
 
 
  time.sleep(3)
  #點擊登錄  
  driver.find_element_by_xpath("//*[@id='loginForm']/div[5]/div/img").click()
  #driver.find_element_by_class_name('loginbtn').click()
  time.sleep(7)
  
  
#針對有黑色邊框的驗證碼圖片的裁剪邊緣  
def Cutedge(src):
  
  #設置要裁剪的區域
  im = Image.open(src)
  
  w, h = im.size
  
  print u"\n驗證碼原圖寬、高尺寸為:",w,h
  
  box = (2,2,110,30)
  
  im.crop(box).save('E:\\pythonScript\\Codeimages\\CutedgeImage.png')
 
 
  print u"\n保存裁剪的圖片 CutedgeImage.png"
 
 
#  
src = ("https://www.test.com")
 
 
driver = webdriver.Chrome() #Firefox()#
 
 
def method_2(src):
   
  before()
 
 
  #調用圖片裁剪方法
  Convertimg()
 
 
  
def clickInput():
 
 
  driver.find_element_by_id("inputButton").click()
 
 
  print "\nInput Click Finish"
 
 
def clickOutput():
 
 
  print u"\n開始執行點擊事件"
 
 
  #開始執行點擊事件      inputButton
  driver.find_element_by_id("outputButton").click()
 
 
  time.sleep(2)
 
 
  print (u'\n開始執行任務,執行間隔時間為10分鐘 ...')
 
 
 
 
 
 
  for i in range(1,4):
 
 
    ISOTIMEFORMAT="%Y-%m-%d %X"
  
    strTime = time.strftime( ISOTIMEFORMAT, time.localtime())
 
 
    driver.refresh()
 
 
    print u"\n正在執行第 ",i,"次...",strTime
  
    time.sleep(5)
  
    driver.find_element_by_id("outputButton").click()
  
    time.sleep(30)
  
    print
    #刷新瀏覽器
    print u"\n刷新當前頁面 ..."
  
    driver.refresh()
  
    print (u'\n等待間隔時間為9分鐘 ...')
  
    time.sleep(505)
  
    print u"\n已執行完第 ",i,u"次,",u"已等待",i*10,u"分鐘"
   
  print (u'\n已執行完成...At The End OF,'+strTime)
  
  driver.quit()
 
 
def isPass():
  try:     
    #driver.find_element_by_id("username").is_displayed() == True
  
    driver.find_element_by_id('status').text == (u"驗證碼不正確!")
    
    print (u"\n****校驗提示信息_驗證碼輸入不正確****")
 
 
    driver.quit()
 
 
    print (u"\n關閉瀏覽器,執行外層循環...")
  
  except Exception:
    print (u"\n****校驗提示信息_驗證碼輸入正確****")
 
 
    clickOutput() #------  click Output
  
method_2(src) #進入工作頁面
 
 
isPass()
 
 
#clickInput() #------  click Input
 
 
#clickOutput() #------  click Output
 
 
 
 
for i in range(1,6):
 
 
  driver = webdriver.Chrome()
  
  src = ("https://www.test.com")
 
 
  method_2(src)
 
 
  isPass()
  
  #clickOutput()

2、控制臺日志

瀏覽器全屏顯示 ...
 
獲取到元素的文本值為: 
 
保存驗證碼圖片完成
 
刪除截屏圖片完成
 
驗證碼原圖寬、高尺寸為: 113 34
 
保存裁剪的圖片 CutedgeImage.png
 
識別出驗證碼文字為: gnbn
 
 
 
開始執行任務,執行間隔時間為10分鐘 ...
 
正在執行第 1 次... 2017-05-25 18:10:24
 
刷新當前頁面 ...
 
等待間隔時間為9分鐘 ...

關于“Python完全識別驗證碼自動登錄的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

项城市| 延安市| 关岭| 肥城市| 新野县| 宿州市| 正宁县| 柳河县| 苍溪县| 临武县| 无棣县| 庆安县| 保亭| 祁阳县| 宜阳县| 福建省| 二连浩特市| 湛江市| 宝兴县| 托克托县| 林甸县| 稻城县| 板桥市| 卢龙县| 昌图县| 兖州市| 叙永县| 常宁市| 牡丹江市| 锡林浩特市| 阿荣旗| 大悟县| 谢通门县| 桃园县| 丹江口市| 巴马| 溆浦县| 吉木萨尔县| 克拉玛依市| 彝良县| 治县。|