qq_37941568 2023-10-19 13:01 采纳率: 100%
浏览 28
已结题

python持续自动处理某监控网页出现新的告警信息

最近项目有这样一个需求,之前使用持续监控网页方式匹配新告警特定图像,但发现很不精准,本人python新手,有其他方式实现吗,监控的网页,需要处理确认的告警都是红色的,见下图

img


出现红色级别的告警,python需要识别到,并且鼠标点击红色前面圆圈按钮,在弹出小框点击确认事件,再在弹出小框点击是。如下三图

img


img

img

  • 写回答

9条回答 默认 最新

  • wcl0922 2023-10-19 18:15
    关注

    引用GPT
    由于您之前使用的持续监控网页方式匹配新告警特定图像不够精准,我可以给您提供以下两种替代方案:

    1. 使用图像识别库OpenCV:您可以使用OpenCV库进行图像识别,以捕捉并处理红色级别的告警。以下是一个简单的示例代码:
    import cv2
    import pyautogui
    
    template_path = 'path/to/template_image.png'  # 替换为您的模板图片的路径
    
    def find_template(screen_image_path, template_path):
        screen = cv2.imread(screen_image_path)
        template = cv2.imread(template_path)
        result = cv2.matchTemplate(screen, template, cv2.TM_CCOEFF_NORMED)
        (_, max_val, _, max_loc) = cv2.minMaxLoc(result)
        return max_val, max_loc
    
    while True:
        # 截取屏幕并保存为screen.png图片
        screenshot_path = 'path/to/screen.png'  # 替换为您保存屏幕截图的路径
        pyautogui.screenshot(screenshot_path)
        
        # 在截图中查找模板图片
        max_val, max_loc = find_template(screenshot_path, template_path)
        threshold = 0.9  # 阈值,用于判断是否匹配
        if max_val >= threshold:
            # 找到匹配的图像,点击确认按钮
            button_x = max_loc[0] + button_width  # 替换为确认按钮的x坐标
            button_y = max_loc[1] + button_height  # 替换为确认按钮的y坐标
            pyautogui.click(button_x, button_y)
        
        # 增加适当的延迟,然后继续下一次循环
    
    1. 使用网页自动化库Selenium:您可以使用Selenium库进行网页自动化操作,以模拟用户点击按钮的行为。以下是一个简单的示例代码:
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.ui import WebDriverWait
    
    # 初始化WebDriver,替换为您使用的浏览器(如Chrome)
    driver = webdriver.Chrome()
    
    # 打开监控的网页
    driver.get('http://example.com')
    
    while True:
        # 等待页面加载完毕
        WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, 'div.classname'))
        )
        
        # 查找红色级别的告警
        alarms = driver.find_elements(By.CSS_SELECTOR, 'div.classname')
        for alarm in alarms:
            if alarm.value_of_css_property('color') == 'red':
                # 点击圆圈按钮
                circle_button = alarm.find_element(By.CSS_SELECTOR, 'button.circle-button')
                circle_button.click()
                
                # 等待弹出小框出现
                WebDriverWait(driver, 10).until(
                    EC.presence_of_element_located((By.CSS_SELECTOR, 'div.modal'))
                )
                
                # 点击确认按钮
                confirm_button = driver.find_element(By.CSS_SELECTOR, 'button.confirm-button')
                confirm_button.click()
                
                # 等待是按钮出现
                WebDriverWait(driver, 10).until(
                    EC.presence_of_element_located((By.CSS_SELECTOR, 'button.yes-button'))
                )
                
                # 点击是按钮
                yes_button = driver.find_element(By.CSS_SELECTOR, 'button.yes-button')
                yes_button.click()
                
        # 增加适当的延迟,然后继续下一次循环
    

    请注意,以上代码仅为示例,您需要根据实际情况进行适当调整和修改。并且,可能需要根据您的操作系统和浏览器类型进行一些配置。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月27日
  • 已采纳回答 10月22日
  • 创建了问题 10月19日

悬赏问题

  • ¥15 obsidian的中文层级自动编号
  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
  • ¥15 神经网络模型一直不能上GPU
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵
  • ¥15 券商软件上市公司信息获取问题
  • ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout
  • ¥15 Android studio AVD启动不了
  • ¥15 陆空双模式无人机怎么做
  • ¥15 想咨询点问题,与算法转换,负荷预测,数字孪生有关