selenium獲取驗證碼截圖
阿新 • • 發佈:2022-12-09
獲取驗證碼截圖程式碼:
獲取驗證碼程式碼: #!/user/bin/env python3 # -*- coding: utf-8 -*- import requests from selenium import webdriver from selenium.webdriver.common.by import By from webdriver_helper import get_webdriver import time from PIL import Image # pip install PIL # cmd命令下載 from os import path import os VerificationCode = '' # 全域性變數 用於獲取寫入驗證碼 # 以下為selenium對瀏覽器的操作 option = webdriver.ChromeOptions() #實現無視覺化介面的操作 option.add_argument( '--headless' ) option.add_argument( '--disable-gpu' ) browser = get_webdriver() browser.maximize_window() browser.implicitly_wait( 10 ) browser.get( "https://starlink-pre.bytenew.com/login" ) #你需要訪問的網站 # =====================對驗證碼進行定位,並儲存驗證碼圖片===================== # 建的目錄 try : path_mkdir = "D:/VerificationCode/" # 建你自己的目錄 # 判斷是否已經存在該目錄 if not os.path.exists(path_mkdir): # 目錄不存在,進行建立操作 os.mkdir(path_mkdir) print ( "目錄新建成功:" + path_mkdir) else : print ( "目錄已存在!!!" ) except BaseException as msg: print ( "新建目錄失敗:" + msg) # (1)登入頁面截圖 browser.save_screenshot( "D:/VerificationCode/code.png" ) #可以修改儲存地址 time.sleep( 2 ) # (2)獲取圖片驗證碼座標 code_ele = browser.find_element(By.XPATH, "//*[@id='app']/div/div/form/div[3]/div/div[2]/img" ) print ( "驗證碼的座標為:" , code_ele.location) #控制檯檢視{'x': 1086, 'y': 368} print ( "驗證碼的大小為:" , code_ele.size) # 圖片大小{'height': 40, 'width': 110} # (3)圖片4個點的座標位置 left = code_ele.location[ 'x' ] #x點的座標 top = code_ele.location[ 'y' ] #y點的座標 right = code_ele.size[ 'width' ] + left #上面右邊點的座標 down = code_ele.size[ 'height' ] + top #下面右邊點的座標 image = Image. open ( 'D:/VerificationCode/code.png' ) # 擷取你整個的登入頁面 # (4)將圖片驗證碼擷取 code_image = image.crop((left * 1.5 , top * 1.5 , right * 1.5 , down * 1.5 )) #乘以1.5是因為電腦縮放是150% code_image.save( 'D:/VerificationCode/code_new.png' ) #擷取的驗證碼圖片儲存為新的檔案
注意:這裡要注意電腦螢幕的縮放與佈局的設定
檢視電腦縮放與佈局方法: