如何在Python中下载Selenium和Firefox文件?



我试图下载一个文件与硒,Geckodriver和Firefox都从Python控制。文件实际上被下载了,但是驱动程序仍然在处理一些东西,即使文件被下载了。

我用来下载文件的代码:
from selenium import webdriver
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList", 2)
fp.set_preference("browser.download.dir", downloaddir)
fp.set_preference("browser.download.useDownloadDir", True)
fp.set_preference("browser.download.viewableInternally.enabledTypes", "")
fp.set_preference("browser.download.manager.useWindow", False)
fp.set_preference("browser.download.manager.showWhenStarting", False)
fp.set_preference("browser.download.manager.closeWhenDone", True);
fp.set_preference('browser.helperApps.neverAsk.openFile', "application/zip")
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/zip")
fp.set_preference("pdfjs.disabled", True)
driver = webdriver.Firefox(firefox_profile=fp)
driver.get('http://speedtest.tele2.net/10MB.zip')
driver.close() # this code never gets called

有人知道发生了什么事吗?我知道当你点击元素的时候有变通的办法。问题是我的工作与组成的url不能点击,但需要直接访问。

Versions (linux):
Gecko 0.29.1 
Firefox 89.0
Python 3.9.5

更新隐式超时配置为5分钟,超过5分钟将失败。

我的问题是:是否有一种方法可以下载在selenium中直接实现的文件而不会引发任何类型的错误(当然是在理想情况下)?

根据@cards的建议,使用requestsurllib进行此类工作更方便。您可以使用selenium进行分页或单击,然后通过检查网站的HTML使用requests

import requests
# retrieve the web content
response = requests.get("http://speedtest.tele2.net/10MB.zip")
# save it as local file
with open("filename.zip", "wb") as file:
file.write(response.content)

注:通过您提供的URL下载的zip文件已损坏。

最新更新