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

2024-05-16 11:02:01 发布

您现在位置:Python中文网/ 问答频道 /正文

好的,到目前为止,我已经有我的程序去我想下载的网站链接,并选择它,然后火狐对话框出现,我不知道该怎么办。我要将此文件保存到桌面上的文件夹中。我每晚都用这个来做,所以我需要这个来工作。请帮忙。

以下是我从网站上获取下载链接的代码:

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()

Tags: 文件代码程序文件夹webget网站链接
2条回答

您需要使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方法,而是使用^{}

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

另见:

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

相关问题 更多 >