You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中ChromeDriver自定义下载文件夹失效问题求助

解决Chromium非无头模式自定义下载路径失效问题

核心问题分析

你使用的是snap打包的Chromium,这类沙箱化应用对文件系统访问有严格限制,普通自定义路径可能不在它的允许访问范围内;同时代码里同时设置了prefs和desired_caps,两者存在配置冲突,且desired_caps里的savefile配置属于旧版格式,当前Chromedriver已不再推荐使用。

具体解决步骤

  • 清理冲突配置
    直接删除desired_caps相关代码,仅保留ChromeOptions中的prefs配置,避免重复设置导致的参数冲突。

  • 适配snap的文件访问权限
    snap版Chromium默认仅允许访问~/Downloads、~/Documents等特定目录,你可以将自定义文件夹放在这些目录下(比如~/Downloads/my_custom_folder),绕过权限限制。如果必须使用其他目录,执行以下命令给Chromium授权:

    sudo snap connect chromium:home :home
    

    该命令允许Chromium访问用户主目录下的所有子文件夹。

  • 修正prefs配置并使用绝对路径
    确保my_data_folder是绝对路径(比如/home/your_username/my_custom_folder),不要使用相对路径或~/(Chromium无法正确解析这类路径)。同时可以添加禁用PDF预览的配置,避免部分文件被浏览器直接打开而非下载:

    options = webdriver.ChromeOptions()
    # 替换为你的绝对路径
    my_data_folder = "/home/xxx/my_custom_downloads"
    prefs = {
        'profile.default_content_settings.popups': 0,
        'download.default_directory': my_data_folder,
        "download.directory_upgrade": True,
        "download.prompt_for_download": False,
        "safebrowsing.enabled": False,
        # 禁用PDF预览插件,强制文件下载
        "plugins.plugins_list": [{"enabled": False, "name": "Chrome PDF Viewer"}]
    }
    options.add_argument('--remote-debugging-port=9222') 
    options.add_experimental_option("useAutomationExtension", False)
    options.add_experimental_option('prefs', prefs)
    # 移除desired_capabilities参数,避免冲突
    driver = webdriver.Chrome(options=options)
    
  • 排查远程调试端口的影响
    如果启用了--remote-debugging-port=9222,可能会复用已有的Chromium实例(该实例的下载路径仍为默认值)。可以先关闭所有Chromium进程再运行脚本,或者在不需要远程调试时直接移除该参数。

验证方法

运行脚本前,手动打开Chromium,将设置中的下载路径改为你的自定义路径,然后关闭所有Chromium窗口,再启动爬虫脚本,新实例会正确加载配置的下载路径。

内容的提问来源于stack exchange,提问作者mm_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 13:35:40