Python结合Selenium下载Excel文件出现0KB大小异常问题求助
问题原因&修复方案
- 核心原因就是你猜测的:程序在下载任务完成前就结束运行,Chrome进程被直接销毁,未完成的下载会残留为0KB的空文件。此外你启用的Chrome无头模式在部分版本中存在默认限制下载的bug,也可能触发该问题。
1. 修复无头模式下载配置
如果你使用的Chrome版本低于104,需要额外添加DevTools协议配置允许无头模式下载,添加在driver = webdriver.Chrome(...)之后即可:
# 给无头模式启用下载权限 driver.execute_cdp_cmd('Page.setDownloadBehavior', { 'behavior': 'allow', 'downloadPath': r"C:\Users\helia\Desktop\Test" })
如果是Chrome 104及以上版本,建议把--headless参数替换为--headless=new,新版无头模式和正常模式功能完全一致,无需额外配置。
2. 添加下载完成等待逻辑
点击下载触发后,不要直接结束程序,加轮询检测下载状态的逻辑,示例如下:
import os import time # 你的下载目录 download_dir = r"C:\Users\helia\Desktop\Test" # 点击下载、处理alert之后加这段 driver.find_element_by_class_name("btn.btn-app").click() driver.switch_to.alert.accept() # 等待下载完成:检测是否存在.crdownload临时文件 seconds = 0 wait_time = 120 # 最长等待2分钟,可根据文件大小调整 while seconds < wait_time: # 遍历下载目录所有文件 temp_files = [f for f in os.listdir(download_dir) if f.endswith('.crdownload') or f.endswith('.tmp')] if not temp_files: # 没有临时文件说明下载完成 break time.sleep(1) seconds += 1 # 最后再关闭driver driver.quit()
3. 额外注意项
- 你原有代码里的缩进存在错误,
ua = UserAgent()开始到options配置的部分缩进多了,需要和上面的options = Options()对齐,否则会报语法错误。 - 确认你设置的下载目录路径存在且有写入权限,权限不足也会导致下载失败生成0KB文件。
内容的提问来源于stack exchange,提问作者Paniz Asghari
相关产品推荐
相关产品推荐

