我試圖用Selenium、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() # 這段代碼從未被呼叫過。
有人知道這是怎么回事嗎? 我知道當你點擊元素時,有一個變通的方法。 問題是我使用的是不能被點擊但需要直接訪問的URL。
版本(linux)。
Gecko 0.29.1。
火狐89.0
Python 3.9.5。
Update
有隱含的超時配置為5分鐘,超時后將失敗。
所以我的問題是。 有沒有一種方法可以在selenium中直接下載一個檔案而不引發任何型別的錯誤(當然是在理想情況下)?
uj5u.com熱心網友回復:
正如@cards所建議的,使用requests或urllib進行這種作業更為方便。你可以使用selenium來分頁或點擊,然后通過檢查網站HTML來使用requests。
import requests
# retrieve the web content"http://speedtest.tele2.net/10MB.zip")
#保存為本地檔案
with open("filename.zip", "wb") 作為檔案。
file.write(response.content)
P.S. 通過你提供的URL下載的壓縮檔案已經損壞。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/320700.html
標籤:
上一篇:火狐安全模式除了禁用主題、擴展程式或附加組件外,還能改變哪些設定?
下一篇:當Allow-Credentials設定為true時,為什么我不能在Access-Control-Allow-Headers上使用通配符*?
