Python火狐爬虫配置Firefox自动下载PDF到指定路径设置失效问题
问题根因
缺少禁用Firefox内置PDF预览的核心配置,且高版本Selenium中同时传入options和firefox_profile会出现配置覆盖,导致除下载路径外的其他偏好不生效。
修正方案
1. 核心必加配置
添加pdfjs.disabled参数禁用火狐自带的PDF预览器,否则浏览器会优先打开PDF预览页,不会触发下载保存流程,你配置的保存规则自然无法生效。
2. 推荐统一用FirefoxOptions管理配置(适配Selenium v4+)
旧版FirefoxProfile传参方式已被弃用,把所有偏好配置统一写入Options对象即可避免冲突,修正后的代码如下:
from selenium.webdriver.firefox.options import Options import os download_Path = items.get(key = 'dir') # 从XML获取下载路径 # 转换为绝对路径避免识别异常 abs_download_path = os.path.abspath(download_Path) if not os.path.exists(abs_download_path): os.makedirs(abs_download_path) options = Options() # 基础下载配置 options.set_preference("browser.download.folderList", 2) options.set_preference("browser.download.dir", abs_download_path) options.set_preference("browser.download.manager.showWhenStarting", False) # 禁用下载弹窗询问 options.set_preference("browser.helperApps.alwaysAsk.force", False) options.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/pdf") # 核心配置:禁用内置PDF预览 options.set_preference("pdfjs.disabled", True) # 禁用新版下载面板干扰 options.set_preference("browser.download.panel.shown", False) # 不需要单独声明FirefoxProfile,直接传options即可 driver = webdriver.Firefox(executable_path = DriverPath, options = options)
3. 额外注意事项
- 移除冗余的失效配置:
browser.helperApps.neverAsk.openFile、webdriver_enable_native_events这类在新版火狐中已不生效的参数,避免干扰正常配置 - 如果是Linux/macOS环境,要保证下载路径有写入权限,否则也会触发保存弹窗
内容的提问来源于stack exchange,提问作者janschoenberger
相关产品推荐
相关产品推荐

