问题描述
我要从一个网站上下载文件,谷歌浏览器总是自动阻止下载,并询问我是否保留。
可是,我想要的是不要询问,默认下载即可。
运行环境
- 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, Options
options = 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打开的浏览器哈!
将自己要打开的网站地址添加到这里即可。