使用 Selenium 和 python 将文件下载到指定位置
Posted
技术标签:
【中文标题】使用 Selenium 和 python 将文件下载到指定位置【英文标题】:Downloading file to specified location with Selenium and python 【发布时间】:2014-10-04 18:31:21 【问题描述】:好的,到目前为止,我已经将我的程序转到了我想从中下载链接并选择它的网站,然后出现了 firefox 对话框,我不知道该怎么做。我想将此文件保存到我桌面上的文件夹中。我将它用于夜间构建,所以我需要它来工作。请帮忙。
这是我从网站上获取下载链接的代码:
driver = web driver.Firefox()
driver.implicitly_wait(5)
driver.get("Name of web site I'm grabbing from")
driver.find_element_by_xpath("//a[contains(text(), 'DEV.tgz')]".click()
【问题讨论】:
【参考方案1】:你需要让Firefox
自动保存这个特定的文件类型。
这可以通过设置browser.helperApps.neverAsk.saveToDisk
首选项来实现:
from selenium import webdriver
profile = webdriver.FirefoxProfile()
profile.set_preference("browser.download.folderList", 2)
profile.set_preference("browser.download.manager.showWhenStarting", False)
profile.set_preference("browser.download.dir", 'PATH TO DESKTOP')
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/x-gzip")
driver = webdriver.Firefox(firefox_profile=profile)
driver.get("Name of web site I'm grabbing from")
driver.find_element_by_xpath("//a[contains(text(), 'DEV.tgz')]").click()
更多解释:
browser.download.folderList
告诉它不要使用默认的Downloads
目录
browser.download.manager.showWhenStarting
轮流显示下载进度
browser.download.dir
设置下载目录
browser.helperApps.neverAsk.saveToDisk
告诉 Firefox 自动下载所选 mime-types
的文件
您可以在浏览器中的about:config
查看所有这些首选项。这里还有一个非常详细的文档页面:About:config entries。
此外,我不会使用xpath
方法,而是使用find_element_by_partial_link_text()
:
driver.find_element_by_partial_link_text("DEV.tgz").click()
另见:
Access to file download dialog in Firefox Firefox + Selenium WebDriver and download a csv file automatically【讨论】:
“profile = webdriver.FFP”行出现错误,IndentationError: unexpected indent @JeradBill 这与您的特定代码有关。不是我提供的。 以WebDriver
不可知的方式这样做有什么好主意吗? (例如 Firefox
和 PhantomJS
可互换)
是否可以为所有文件设置browser.helperApps.neverAsk.saveToDisk
?我不知道我下载的文件类型。
@alecxe chromdriver 选项browser.helperApps.neverAsk.saveToDisk
的等效项是什么?【参考方案2】:
如果应用程序是动态生成的(mime-types)使用 Chrome 浏览器将是更好的方法,因为 Chrome 不会打开文件下载弹出窗口。但如果您需要多次下载,则应启用多次下载选项。
【讨论】:
我正在尝试使用 Chrome 执行相同的操作,但我无法设置下载文件的位置。相同的配置文件功能似乎不起作用。有谁知道如何在 Chrome 中设置下载位置? chromePrefs.put("download.default_directory",downloadFilepath); _ChromeOptions.setExperimentalOption("prefs", chromePrefs); @niNabrowser.helperApps.neverAsk.saveToDisk
怎么样?以上是关于使用 Selenium 和 python 将文件下载到指定位置的主要内容,如果未能解决你的问题,请参考以下文章
使用 Selenium 和 python 为 Instagram 提供上传文件路径
使用 Selenium Python 将文件上传到 Twitter
使用 Python 和 Selenium 将 APK 上传到解释为 URL 的网页