Download Selenium-python, but the file is saved as .part

My script works, but it saves the file as .part, although it checks it for a manually downloaded file for the same size and, fortunately, is complete. I cannot understand why this is being saved as a partial file. Varieties are inconvenient for my next idea. Anyone have any idea why this might be? Here is my code ... that works ...

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() 
+4
source share
3 answers

It loads as .part because a popup appears as a dialog box. Python cannot work with a popup. I found that when I try to set the settings for a custom profile in webdriver, it does not necessarily work (for example, I was able to set a custom profile in selenium to download csv, but not pdf). However, I was able to solve my problem with pdf by creating a custom profile in firefox. I am not very experienced with tsv files, so I'm not sure what kind of mood would be. If you can create a new firefox profile (following the instructions here: https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles ) you can try to set this profile to save CA by default. If you donโ€™t know the exact setting to enter and change โ€œabout: configโ€, you can try just clicking on the pop-up flag to always save these files.

From there, you will create your profile for this custom profile, which you created as follows:

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

Keep in mind that YOUR PROFILE NAME will first have a bunch of random letters, so follow this path to find the actual profile name.

+3
source

I think the only thing you are missing in your Firefox profile settings is

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

So all code should be

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

For plain text, the following value should be used:

 fp.set_preference("browser.helperApps.neverAsk.saveToDisk","text/plain") 
0
source

Source: https://habr.com/ru/post/1489014/


All Articles