使用Chrome驱动程序通过python和selenium在指定位置下载文件

时间:2016-02-11 05:58:35

标签: python google-chrome selenium download driver

我正在尝试通过selenium的点击功能自动下载一些链接,我使用 chrome webdriver 和python作为编程语言。 如何通过python程序选择下载目录,以便不会将其下载到默认的Downloads目录中。我找到了一个firefox的解决方案,但每次点击链接时都会弹出下载对话框,这在Chrome中不会发生。

8 个答案:

答案 0 :(得分:42)

我发现已接受的解决方案并不起作用,但这种微小的改变确实如此:

import webdriver
chrome_options = webdriver.ChromeOptions()
prefs = {'download.default_directory' : '/path/to/dir'}
chrome_options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(chrome_options=chrome_options)

答案 1 :(得分:5)

2018年更新:

无效的Chrome命令行切换,请参阅下面的source code使用hoju answer来设置偏好设置。

  

原件:

您可以为chrome创建配置文件并定义测试的下载位置。这是一个例子:

from selenium import webdriver

options = webdriver.ChromeOptions() 
options.add_argument("download.default_directory=C:/Downloads")

driver = webdriver.Chrome(chrome_options=options)

答案 2 :(得分:3)

我在尝试完全按照自己的意愿进行操作时也遇到了确切的问题:)

对于Chrome:

from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--start-maximized")
prefs = {"profile.default_content_settings.popups": 0,
             "download.default_directory": 
                        r"C:\Users\user_dir\Desktop\\",#IMPORTANT - ENDING SLASH V IMPORTANT
             "directory_upgrade": True}
options.add_experimental_option("prefs", prefs)
browser=webdriver.Chrome(<chromdriver.exe path>, options=options)

对于Firefox:   按照此博客的答案:  https://srirajeshsahoo.wordpress.com

博客介绍了所有有关弹出和下载目录以及操作方法的信息

答案 3 :(得分:3)

使用偏好解决了我的问题

path = os.path.dirname(os.path.abspath(__file__))
prefs = {"download.default_directory":path}
options = Options()
options.add_experimental_option("prefs", prefs)
driver = webdriver.Chrome('../harveston/chromedriver.exe',options = options)

答案 4 :(得分:2)

这在Chrome v81.0.4044.138上对我有用

preferences = {
                "profile.default_content_settings.popups": 0,
                "download.default_directory": os.getcwd() + os.path.sep,
                "directory_upgrade": True
            }

chrome_options.add_experimental_option('prefs', preferences)
browser = webdriver.Chrome(executable_path="/usr/bin/chromedriver", options=chrome_options)

答案 5 :(得分:0)

如果您使用的是Linux发行版

使用此代码

prefs = {'download.prompt_for_download': False,
         'download.directory_upgrade': True,
         'safebrowsing.enabled': False,
         'safebrowsing.disable_download_protection': True}

options.add_argument('--headless')
options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome('chromedriver.exe', chrome_options=options)
driver.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
driver.desired_capabilities['browserName'] = 'ur mum'
params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': r'C:\chickenbutt'}}
self.driver.execute("send_command", params)

答案 6 :(得分:0)

要提供下载目录和chrome的diver可执行路径,请使用以下代码。

from selenium import webdriver
options = webdriver.ChromeOptions() 
options.add_argument("download.default_directory=C:/Your_Directory")
driver = webdriver.Chrome(options=options ,executable_path='C:/chromedriver')

相应地更改代码中的路径。

答案 7 :(得分:-6)

如果您只在本地计算机上使用脚本,请使用此解决方案

点击菜单 - &gt;设置 - &gt;显示高级设置... - &gt;下载

现在取消选中

在下载之前询问保存每个文件的位置

enter image description here

希望它会对你有所帮助:)。