from selenium import webdriver
import time
from selenium.webdriver.common.by import By
from PIL import Image
import ddddocr
import time
driver = webdriver.Chrome()
option = webdriver.ChromeOptions()
option.add_experimental_option("detach", True)
# 忽略证书错误
option.add_argument('--ignore-certificate-errors')
# 忽略 Bluetooth: bluetooth_adapter_winrt.cc:1075 Getting Default Adapter failed. 错误
option.add_experimental_option('excludeSwitches', ['enable-automation'])
# 忽略 DevTools listening on ws://127.0.0.1... 提示
option.add_experimental_option('excludeSwitches', ['enable-logging'])
# 获取driver对象, 并将配置好的option传入进去 运行结束不关闭窗口
driver = webdriver.Chrome(options=option)
driver.get('https://xatu.168wangxiao.com/web/login?redirect=%2Fhome')
# 防止图片识别错误 try except 处理
while True:
#获取图片所在的div 或者可以直接获取图片得id 我这个图片比较麻烦 所以我获取得外层得div
try:
svgHeml=driver.find_element(By.XPATH,'/html/body/div[1]/div/div[2]/div/div/div/div[2]/div[1]/div/form/div[4]/div/div[2]/div')
# 获取元素的位置和尺寸
location = svgHeml.location
size = svgHeml.size
# 计算四个角的坐标
x1 = location['x']
y1 = location['y']
x2 = location['x'] + size['width']
y2 = location['y'] + size['height']
# 输出四个角的坐标
print("左上角坐标: (x1, y1) = ({0}, {1})".format(x1, y1))
print("右上角坐标: (x2, y1) = ({0}, {1})".format(x2, y1))
print("左下角坐标: (x1, y2) = ({0}, {1})".format(x1, y2))
print("右下角坐标: (x2, y2) = ({0}, {1})".format(x2, y2))
# 截全图
screenshot_path = 'screenshot.png'
driver.save_screenshot(screenshot_path)
# # time.sleep(3)
# # # 截取指定区域
im = Image.open(screenshot_path)
region = im.crop((x1, y1, x2, y2))
# # 保存截图
cropped_path = 'result_screenshot.png'
region.save(cropped_path)
start = time.time() # 开始时间
# 1. 创建DdddOcr对象
ocr = ddddocr.DdddOcr(show_ad=False)
# 2. 读取图片
with open(cropped_path, 'rb') as f:
img = f.read()
# 3. 识别图片内验证码并返回字符串
result = ocr.classification(img)
print("识别结果:",result)
except:
# 以防万一 图片识别错误 重新点击图片 重新获取验证码 执行try
driver.find_element(By.XPATH,'/html/body/div[1]/div/div[2]/div/div/div/div[2]/div[1]/div/form/div[4]/div/div[2]/div').click()
time.sleep(3)
参考大佬链接
Selenium 自动化截取网页指定区域文章来源地址https://www.toymoban.com/news/detail-852270.html
文章来源:https://www.toymoban.com/news/detail-852270.html
到了这里,关于selenium截取特定区域图片识别验证码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!