博客园  :: 首页  :: 管理

关于Ali Cloud / 阿里云 ,对于视频点播的访问日志,如果没有配置,日志推送 的情况下

默认只能看到一个月的访问日志,如果有大量访问的情况,基本上就是每小时一个日志,一天24个日志.gz格式的文件

但是要下载所有的访问日志,却只能一个一个的下载,于是笔者想到可以使用python,基于 Selenium模块,进行批量下载

记录核心代码和逻辑如下:

dst_date='2025-06-28'
End_date='2025-07-29'

while True:
    
    print(dst_date)
    
    dst_date_xpath=f"//td[@title='{dst_date}']"
    
    date_picker = driver.find_element(By.XPATH, "//input[@role='combobox']")
    date_picker.click()
      
    date_input = driver.find_element(By.XPATH, "//input[@placeholder='YYYY-MM-DD']")
    date_input.send_keys(Keys.CONTROL + 'a')
    date_input.send_keys(Keys.DELETE)
    date_input.send_keys(dst_date)
    date_input.send_keys(Keys.ENTER)
  
    # 等待可以点击日期 ,这样就能确保不异常,Author: QQ-5201351
    date_choose = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, dst_date_xpath)))
    date_choose.click()
    
    Query_Button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.next-btn.next-medium.next-btn-primary")))
    Query_Button.click()
    
    # 可能遇到一天日志没有,或者太少,下面就没有页码,这里只是为了切换日期后,归位到第一页,无论有没有第一页、都会到后面的下载过程!!!!
    try:
        Fist_Page = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//span[contains(@class,'next-btn-helper') and text()='1']")))
        Fist_Page.click()
    except:
        pass
    
    time.sleep(5)
    
    while True:
        
        download_links = [link.get_attribute('href') for link in WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.XPATH, "//a[text()='下载']")))]
        
        for i in download_links:
            print(i)
            driver.get(i)
        
        Next_Button=WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "button.next-btn.next-next")))        
        Is_last_page=Next_Button.get_attribute('disabled')
        
        if not Is_last_page:
            Next_Button.click()
            time.sleep(5)
        else:
            break

    
    dst_date=get_next_day(dst_date)

    if dst_date==End_date:
        break

这样就能自动下载自己定义的日期范围内的日志了,不过最多,也只能下载到1个月的日志!对于生产环境,需要更多的日志,还是建议配置上 【日志推送】

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/19009482