如何通过Python Selenium+ChromeDriver自动下载图片(JPEG/PNG)与PDF文件?
解决ChromeDriver自动下载图片和PDF的问题
我完全懂你遇到的麻烦——Chrome默认会在标签页预览JPEG/PNG图片和PDF文件,导致Selenium脚本没法自动触发下载,只能处理那些Chrome没法预览的文件类型。别担心,只要调整Chrome的偏好设置,就能让这些文件直接下载而不是预览。
下面是具体的解决方案,直接修改你的ChromeDriver配置就行:
完整配置示例
from selenium import webdriver from selenium.webdriver.chrome.options import Options # 1. 创建ChromeOptions对象 chrome_options = Options() # 2. 设置下载相关的偏好配置 download_directory = "C:/Your/Custom/Download/Path" # 替换成你想保存文件的实际路径 chrome_options.add_experimental_option("prefs", { # 指定下载目录 "download.default_directory": download_directory, # 关闭下载确认弹窗 "download.prompt_for_download": False, # 允许更新下载目录 "download.directory_upgrade": True, # 强制PDF直接下载,不预览 "plugins.always_open_pdf_externally": True, # 空字符串表示所有原本会被预览的文件类型都直接下载(包括图片、PDF等) "download.extensions_to_open": "", # 禁止弹出窗口 "profile.default_content_settings.popups": 0, # 可选:禁用Chrome内置的PDF查看器,作为额外保障 "plugins.plugins_disabled": ["Chrome PDF Viewer"] }) # 3. 初始化ChromeDriver driver = webdriver.Chrome(options=chrome_options)
关键参数解释
download.default_directory:一定要指定自定义下载路径,避免Chrome默认路径的权限或查找问题,Windows路径记得用正斜杠/或者双反斜杠\\。plugins.always_open_pdf_externally:专门针对PDF文件,强制Chrome跳过预览环节,直接触发下载。download.extensions_to_open:设置为空字符串是核心——Chrome原本会自动预览的文件类型(比如JPEG、PNG、PDF),现在都会直接下载,而不是在标签页打开。download.prompt_for_download:关闭下载时的确认弹窗,确保脚本完全自动化,不需要人工干预。
注意事项
- 确保你的ChromeDriver版本和Chrome浏览器版本严格匹配,版本不兼容可能导致配置不生效。
- 如果指定的下载路径不存在,Chrome会自动创建它,但建议提前手动创建,避免潜在的权限问题。
- 测试时可以直接访问一个图片或PDF的链接,观察是否自动下载到指定目录,而不是打开预览标签页。
把这些配置整合到你现有的脚本里,就能解决图片和PDF无法自动下载的问题啦!
内容的提问来源于stack exchange,提问作者animesharma
相关产品推荐
相关产品推荐

