Loading

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' )     #截取的验证码图片保存为新的文件

注意:这里要注意电脑屏幕的缩放与布局的设置

查看电脑缩放与布局方法:

 

posted @ 2022-12-09 18:08  DuKe渡客  阅读(576)  评论(0编辑  收藏  举报