Selen-Python-Download, aber Datei wird als .part gespeichert

Mein Skript funktioniert, aber es ist das Speichern der Datei als .part, obwohl die Überprüfung dieser gegen eine manuell heruntergeladene Datei seine gleiche Größe und dankbar abgeschlossen. Ich kann nicht verstehen, warum es als Teildatei gespeichert wird. Sorta ist für meine nächste Idee unpraktisch. Hat jemand eine Vorstellung davon, warum das sein könnte? Hier ist mein Code … was funktioniert …

from selenium import webdriver from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.common.keys import Keys import time import mechanize import urllib from urllib import urlretrieve fp = webdriver.FirefoxProfile() fp.set_preference("browser.download.folderList",1) fp.set_preference("browser.download.manager.showWhenStarting",False) fp.set_preference("browser.download.dir",'Users/matthewyoung/Downloads') fp.set_preference("browser.helperApps.neverAsk.saveToDisk","Plain text") fp.set_preference("browser.download.manager.scanWhenDone",False) fp.set_preference("browser.download.manager.showAlertOnComplete",True) fp.set_preference("browser.download.manager.useWindow",False) fp.set_preference("browser.helperApps.alwaysAsk.force",False) browser = webdriver.Firefox(firefox_profile=fp) #browser = webdriver.Firefox() # Get local session of firefox browser.get("http://vizier.u-strasbg.fr/vizier/surveys.htx") # Load page assert "VizieR" in browser.title #p = raw_input('Star name? ') elem = browser.find_element_by_name('-c') # Find the query box elem.send_keys('mwc 560' + Keys.RETURN) time.sleep(0.2) # Let the page load, will be added to the API elem=browser.find_element_by_name('-out.max') elem.send_keys('unlimited'+Keys.TAB) elem2=browser.find_element_by_name('-out.form') time.sleep(0.5) elem2.send_keys('; -Separated-Values') time.sleep(0.5) elem2.send_keys(Keys.TAB) elem2.send_keys(Keys.TAB) time.sleep(0.2) browser.find_element_by_class_name('data').submit() time.sleep(3.0) #df=elem2.send_keys(Keys.SPACE) #print df browser.close() 

  • Python Selen Klick () funktioniert nicht
  • Python GUI2Exe Anwendung Standalone Build (mit Py2Exe)
  • Langsames Scrollen der Seite mit Selen
  • Getting console.log Ausgabe von Chrome mit Selen Python API Bindungen
  • Selen-Klick (), ohne auf die Seite zu warten, um Python zu laden
  • Füllen Sie Benutzernamen und Passwort mit Selen in Python
  • Selen kann sich nicht mit GhostDriver verbinden (aber nur manchmal)
  • Kann nicht auf eine Markierung von einer Seite mit BeautifulSoup bekommen
  • 3 Solutions collect form web for “Selen-Python-Download, aber Datei wird als .part gespeichert”

    Es wird als .part heruntergeladen, da das Popup speichern als Dialogfenster erscheint. Python kann nicht mit dem Popup-Fenster umgehen. Ich habe festgestellt, dass, wenn Sie versuchen, Einstellungen für ein benutzerdefiniertes Profil im Webdriver zu setzen, es nicht unbedingt funktionieren (zum Beispiel konnte ich ein benutzerdefiniertes Profil in Selen setzen, um ein csv aber nicht ein pdf herunterzuladen). Allerdings war ich in der Lage, mein pdf Problem zu lösen, indem ich ein benutzerdefiniertes Profil in Firefox. Ich bin nicht sehr erfahren mit tsv-Dateien, so bin ich nicht sicher, welche Einstellung das wäre. Wenn du ein neues Firefox-Profil erstellen kannst (nach den Anweisungen hier: https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles ) kannst du versuchen, das zu setzen Profil, um tsv standardmäßig zu speichern. Wenn Sie nicht wissen, die genaue Einstellung zu gehen und ändern in "über: config" können Sie versuchen, klicken Sie einfach auf das Kontrollkästchen auf dem Popup, um immer diese Arten von Dateien zu speichern.

    Von dort aus setzen Sie Ihr Profil auf das benutzerdefinierte Profil, das Sie so erstellt haben:

      profile = webdriver.firefox.firefox_profile.FirefoxProfile("/Users/matthewyoung/Library/Application Support/Firefox/Profiles/"YOUR PROFILE NAME") 

    Denken Sie daran, dass IHRE PROFIL NAME eine Reihe von zufälligen Buchstaben zuerst haben wird, also folgen Sie diesem Pfad, um den tatsächlichen Profilnamen zu finden.

    Ich denke, das einzige, was Sie fehlen aus Ihrem Firefox Profil Einstellung ist die folgende

     fp.set_preference("browser.helperApps.neverAsk.openFile", 'Plain Text') 

    Also der ganze Code sollte sein

     from selenium import webdriver from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.common.keys import Keys import time fp = webdriver.FirefoxProfile() fp.set_preference("browser.download.folderList",2) fp.set_preference("browser.download.manager.showWhenStarting",False) fp.set_preference("browser.download.dir",'Users/matthewyoung/Downloads') fp.set_preference("browser.helperApps.neverAsk.openFile", 'Plain Text') fp.set_preference("browser.helperApps.neverAsk.saveToDisk","Plain text") fp.set_preference("browser.download.manager.scanWhenDone",False) fp.set_preference("browser.download.manager.showAlertOnComplete",True) fp.set_preference("browser.download.manager.useWindow",False) fp.set_preference("browser.helperApps.alwaysAsk.force",False) browser = webdriver.Firefox(firefox_profile=fp) browser.get("http://vizier.u-strasbg.fr/vizier/surveys.htx") # Load page assert "VizieR" in browser.title elem = browser.find_element_by_name('-c') # Find the query box elem.send_keys('mwc 560' + Keys.RETURN) time.sleep(0.2) # Let the page load, will be added to the API elem=browser.find_element_by_name('-out.max') elem.send_keys('unlimited'+Keys.TAB) elem2=browser.find_element_by_name('-out.form') time.sleep(0.5) elem2.send_keys('; -Separated-Values') time.sleep(0.5) elem2.send_keys(Keys.TAB) elem2.send_keys(Keys.TAB) time.sleep(0.2) browser.find_element_by_class_name('data').submit() time.sleep(3.0) browser.close() 

    Der folgende Wert sollte für Klartext verwendet werden:

     fp.set_preference("browser.helperApps.neverAsk.saveToDisk","text/plain") 
    Python ist die beste Programmiersprache der Welt.