使用Headless Selenium时浏览器阻止文件下载的问题求助
解决Chrome阻止Selenium自动化下载文件的问题
Chrome会默认拦截自动化工具发起的下载请求,仅修改User-Agent通常不足以解决问题,你需要配置Chrome的下载偏好及安全选项,以下是调整后的完整代码:
from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.by import By import time def getting_file(URL): page = Options() page.headless = False # 配置下载核心偏好:自动下载、不弹提示、指定路径 prefs = { "download.default_directory": "你的本地下载路径", # 替换为实际路径,如"C:/Downloads"或"/Users/xxx/Downloads" "download.prompt_for_download": False, "download.directory_upgrade": True, "safebrowsing.enabled": True } page.add_experimental_option("prefs", prefs) # 添加绕过下载拦截的参数 page.add_argument("--safebrowsing-disable-download-protection") page.add_argument("--disable-popup-blocking") page.add_argument("--disable-extensions") # 添加真实浏览器User-Agent(匹配当前Chrome版本更佳) page.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36") service = Service(ChromeDriverManager().install()) driver = webdriver.Chrome(service=service, options=page) # 修正原代码变量名不一致问题:参数是URL,调用时统一用大写 driver.get(URL) driver.get("https://www.rtm.selic.gov.br/extrato-selic-web/pesquisa-extrato-diario-asel.jsp?bust=1662995259495") time.sleep(5) driver.find_element(By.CSS_SELECTOR, "tr:nth-child(2) .linkAcao").click() time.sleep(5) driver.quit() # 用quit()替代close(),确保完全终止Chrome进程
关键配置说明:
download.prompt_for_download: 设为False,直接跳过下载确认弹窗--safebrowsing-disable-download-protection: 关闭Chrome针对自动化工具的下载保护拦截- 固定
download.default_directory: 避免文件散落在默认路径,方便后续查找处理 - 修正变量名:原代码中函数参数
URL和内部调用的url大小写不一致,会触发未定义错误
内容的提问来源于stack exchange,提问作者user18462482
相关产品推荐
相关产品推荐

