ubuntuusers.de

Selenium Firefox Python Download File

Status: Gelöst | Ubuntu-Version: Ubuntu 20.04 (Focal Fossa)
Antworten |

Linuxfreak1

Anmeldungsdatum:
22. Januar 2017

Beiträge: 19

Hallo zusammen,

ich versuche seit Tagen mir von einer Website eine Datei automatisch herunterladen. Ich habe schon die verschiedensten Anleitungen versucht. Leider ohne Erfolg. Wenn ich das "-headless" auskommentiere sehe ich das die Website richtig aufgerufen wird. Leider erscheint immer der Download Dialog obwohl ich den MIME Type richtig angegeben habe. Vielleicht habt ihr noch eine Idee.

Geckodriver : 0.29

MIME Type der Datei :

1
2
file --mime-type file.tar.gz 
file.tar.gz: application/gzip

Und hier mein Python Code :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.keys import Keys

download_path = '/tmp' 
firefoxOptions = Options()
firefoxOptions.add_argument("-headless")
profile = webdriver.FirefoxProfile()
profile.set_preference("browser.download.folderList", 2)
profile.set_preference("browser.helperApps.alwaysAsk.force", False);
profile.set_preference("browser.download.manager.showWhenStarting", False)
profile.set_preference("pdfjs.disabled", True);
profile.set_preference("browser.download.dir", download_path)
profile.set_preference("browser.download.downloadDir", download_path)
profile.set_preference("browser.download.defaultFolder", download_path)
profile.set_preference("browser.helperApps.neverAsk.openFile", 'application/gzip')
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", 'application/gzip')
profile.set_preference("browser.download.panel.shown", False);

browser = webdriver.Firefox(executable_path="/opt/geckodriver", firefox_profile=profile)

browser.get('https://website.com/abcdef/')
browser.find_element_by_link_text('file.tar.gz').click()
browser.find_element_by_link_text('Herunterladen').click()

Was allerdings sehr komisch ist, wenn ich das gleiche auf z.b. Nextcloud versuche klappt es ohne Probleme.

1
2
3
4
5
6
...
profile.set_preference("browser.helperApps.neverAsk.openFile", 'application/gzip,application/zip')
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", 'application/gzip,application/zip')
...
browser.get('https://nextcloud.com/install/#instructions-server')
browser.find_element_by_link_text('Download Nextcloud').click()

Linuxfreak1

(Themenstarter)

Anmeldungsdatum:
22. Januar 2017

Beiträge: 19

Hab den Fehler gefunden. Das File ist zwar ein tar.gz Datei nur vom Server wird etwas anderes geliefert. Musste nur das MIME-Type "application/octet-stream" hinzufügen. 🙄

Antworten |