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

如何通过Selenium Chrome WebDriver指定路径重命名下载图片?

嘿,我太懂你用Selenium模拟Ctrl+S下载图片时碰壁的烦恼了——那些系统级的保存弹窗简直是自动化的噩梦,不同浏览器、不同系统的行为还不一样,很容易就失效。给你两个亲测靠谱的方案,彻底解决这个问题:

方案1:直接获取图片内容保存(最稳定推荐)

这个方法完全绕开浏览器的下载弹窗,直接请求图片资源并保存,速度快还不容易出问题。如果你的图片链接是公开可访问的,优先用这个:

import requests
import os

# 配置参数
img_url = "http://acervo.estadao.com.br/publicados/1973/03/22/m/19730322-30054-nac-0114-999-116-not.jpg"
save_dir = "C:/Your/Target/Folder/"  # 替换成你的指定路径
custom_file_name = "1973_estadao_frontpage.jpg"  # 你的自定义文件名

# 确保保存目录存在
os.makedirs(save_dir, exist_ok=True)

# 模拟浏览器请求(避免被网站拦截)
headers = {
    "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"
}

# 下载并保存图片
response = requests.get(img_url, headers=headers)
if response.status_code == 200:
    save_path = os.path.join(save_dir, custom_file_name)
    with open(save_path, "wb") as img_file:
        img_file.write(response.content)
    print(f"搞定!图片已保存到:{save_path}")
else:
    print(f"下载失败,服务器返回状态码:{response.status_code}")
方案2:用Selenium配置浏览器自动下载+重命名

如果因为某些原因必须通过Selenium操作(比如需要登录验证、图片是JS动态渲染的),可以配置Chrome自动下载到指定路径,之后再重命名文件:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import os
import time

# 配置参数
img_url = "http://acervo.estadao.com.br/publicados/1973/03/22/m/19730322-30054-nac-0114-999-116-not.jpg"
save_dir = "C:/Your/Target/Folder/"
custom_file_name = "1973_estadao_frontpage.jpg"
original_file_name = "19730322-30054-nac-0114-999-116-not.jpg"  # 图片的原始文件名

# 确保保存目录存在
os.makedirs(save_dir, exist_ok=True)

# 配置Chrome自动下载
chrome_options = Options()
prefs = {
    "download.default_directory": save_dir,
    "download.prompt_for_download": False,  # 关闭下载确认弹窗
    "download.directory_upgrade": True,
    "safebrowsing.enabled": True  # 跳过安全检查
}
chrome_options.add_experimental_option("prefs", prefs)

# 启动浏览器并打开图片
driver = webdriver.Chrome(options=chrome_options)
driver.get(img_url)

# 等待下载完成(根据你的网络速度调整时间)
time.sleep(3)

# 重命名文件
original_path = os.path.join(save_dir, original_file_name)
new_path = os.path.join(save_dir, custom_file_name)

if os.path.exists(original_path):
    os.rename(original_path, new_path)
    print(f"图片已重命名并保存到:{new_path}")
else:
    print("下载未完成或原始文件不存在,请检查网络或延长等待时间")

driver.quit()
为什么模拟Ctrl+S会失败?

Selenium只能操控浏览器内部的网页元素,对于Windows/macOS的原生系统弹窗(比如文件保存对话框),它没有权限直接操控。模拟Ctrl+S的操作经常因为以下原因失效:

  • 焦点不在图片页面上,快捷键触发的是其他窗口
  • 系统快捷键冲突(比如某些软件占用了Ctrl+S)
  • 浏览器的安全限制,阻止了自动化的保存操作

所以这种方法本来就不是可靠的解决方案,上面的两个方案才是更稳妥的选择。

内容的提问来源于stack exchange,提问作者Luís Henrique Martins

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:35:03