问题描述
我要从一个网站上下载文件,谷歌浏览器总是自动阻止下载,并询问我是否保留。
可是,我想要的是不要询问,默认下载即可。
运行环境
- OS: macOS
- selenium: 4.19.0
- python: 3.10.11
- Chrome: 124.0.6367.62
- selenium chromedriver: 123.0.6312.58
尝试无效方案
尝试selenium 下载文件取消安全下载的配置 博客中配置:
from undetected_chromedriver import Chrome, Optionsoptions = Options()# 禁用下载保护,允许下载所有类型的内容
options.add_experimental_option("prefs", { "download_restrictions": 0 })
options.add_experimental_option("prefs", { "safebrowsing.enabled": False })# 配置文件下载路径
options.add_experimental_option("prefs", {"download.default_directory": "/path/to/download/directory","download.prompt_for_download": False,"download.directory_upgrade": True,"safebrowsing_for_trusted_sources_enabled": False,"safebrowsing.enabled": False
})# 运行 Chrome,并隐藏窗口以在后台执行
options.add_argument("--headless")
options.add_argument("--disable-gpu")with Chrome(options=options) as browser:# 转到目标网页browser.get("https://example.com/downloads/myfile.docx")# 找到下载链接并点击下载文件download_link = browser.find_element_by_xpath("//a[@download]")download_link.click()# 一旦下载开始,等待文件下载完成while not any(fname.endswith(".docx") for fname in os.listdir("/path/to/download/directory")):time.sleep(1)print("Download completed!")
按照如上配置,无效,浏览器仍然有阻止行为。
解决方案
⚠️注意:必须设置selenium打开的浏览器哈!
将自己要打开的网站地址添加到这里即可。