当前位置: 首页 > 知识库问答 >
问题:

使用Selenium和python下载文件到指定位置

左丘涵畅
2023-03-14

好的,到目前为止,我已经把我的程序转到我想下载链接的网站并选择它,然后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()

共有2个答案

傅胡媚
2023-03-14

如果应用程序是动态生成的(mime类型),使用Chrome浏览器将是更好的方法,因为Chrome不会打开文件下载弹出窗口。但如果需要多次下载,则应启用多次下载选项。

郝冥夜
2023-03-14

你需要让Firefox自动保存这个特定的文件类型。

这可以通过设置browser.helperpps.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()

更多解释:

  • 浏览器。下载folderList告诉它不要使用默认的下载目录
  • 浏览器。下载经理开始时显示显示下载进度的轮次
  • 浏览器。下载目录设置下载目录
  • 浏览器。帮手们。内韦拉斯克。saveToDisk告诉Firefox自动下载所选mime类型的文件

您可以在浏览器中的about:config查看所有这些首选项。这里还有一个非常详细的文档页面:About:config entries。

此外,我不使用xpath方法,而是使用find_element_by_partial_link_text()

driver.find_element_by_partial_link_text("DEV.tgz").click()

另见:

  • 访问Firefox中的文件下载对话框
  • Firefox Selenium WebDriver并自动下载csv文件

 类似资料:
  • 问题内容: 我试图通过selenium的点击功能自动下载一些链接,并且我正在使用 chrome webdriver 和python作为编程语言。 如何 通过python程序 选择下载目录 ,以使它不会在默认的Downloads目录中下载。我找到了适用于Firefox的解决方案,但是每次单击链接时Chrome都不会弹出下载对话框。 问题答案: 更新2018: 它不是有效的Chrome命令行开关,请参

  • 我目前试图下载一个文件从谷歌驱动器使用PyDrive,但我只能下载文件到相同的位置作为我的Python程序。有没有办法指定文件的下载位置?这是我目前下载文件的方式。

  • 问题内容: 这是我的情况:我必须登录到一个网站并从那里下载CSV,而从linux服务器无头。该页面使用JS,没有它就无法工作。 经过一些研究,我选择了Selenium和PhantomJS。登录,设置CSV参数并使用Selenium / PhantomJS / Py3查找下载按钮没有问题,实际上令人称奇。 但是单击下载按钮没有任何作用。经过一番研究,我发现PhantomJS似乎不支持下载对话框和下载

  • 我正试图从一个包含阿根廷代表投票的公共网站自动下载excel文件。例如,来自以下页面:https://votaciones.hcdn.gob.ar/votacion/4108 我收到以下消息: selenium.common.exceptions。ElementClickInterceptedException:消息:元素在点(229480)处不可单击,因为另一个元素使其模糊 如果我尝试通过< c

  • 问题内容: 我的脚本必须使用一组凭据登录到站点,然后在某些下拉菜单中导航以选择报告。选择报告后,将弹出一个新窗口,必须在其中调整参数以生成报告。设置完参数后,相同的弹出窗口将以生成的PDF格式刷新报告,并使用Chrome的内置PDF查看器显示。我的印象是,将某些选项传递给webdriver会禁用此PDF查看器,而只是下载文件,但是PDF查看器仍在显示,不会自动下载任何内容。我当然会丢失某些东西,或

  • 我试着跟随以前关于这个主题的帖子,比如这些(帖子1,帖子2),但我仍然被困住了。 所以,在这一点上,Chrome仍然显示PDF查看器,尽管我之前禁用了它。没有下载任何东西,所以我想知道我是否需要提供另一行代码或其他东西。 在Windows 10上使用Selenium版本3.141.0、Python 3.6.4、Chrome webdriver 2.45。