1. 程式人生 > 其它 >selenium獲取驗證碼截圖

selenium獲取驗證碼截圖

獲取驗證碼截圖程式碼:

獲取驗證碼程式碼:
#!/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' )     #擷取的驗證碼圖片儲存為新的檔案

注意:這裡要注意電腦螢幕的縮放與佈局的設定

檢視電腦縮放與佈局方法: