Estoy usando Selenium para descargar automáticamente archivos en formato CSV desde esta página:
https://catalog.data.gov/dataset?tags=crime
Este es el código que estoy usando:
profile = webdriver.FirefoxProfile() profile.set_preference("browser.download.folderList", 2) profile.set_preference("browser.download.manager.showWhenStarting", False) profile.set_preference("browser.download.dir", '/home/luis/Desktop/data/') profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/csv") driver = webdriver.Firefox(firefox_profile=profile) driver.get(url) time.sleep(2) download_button = driver.find_element_by_xpath('//*[@id="content"]/div[2]/div[2]/section[1]/div[2]/ul/li[14]/div/ul/li[1]/a') download_button.click()
Aquí se establece la carpeta de descarga:
profile.set_preference("browser.download.dir", '/home/luis/Desktop/data/')
¿Cómo puedo seleccionar el nombre con el que se guarda el archivo? ¿Puede ser el nombre definido en el momento de la descarga?
Me refiero a algo como esto:
For name in names: download_button = driver.find_element_by_xpath('//*[@id="content"]/div[2]/div[2]/section[1]/div[2]/ul/li[14]/div/ul/li[{}]/a'.format(name)) download_button.click() save_file_as(name)
No tienes control sobre la descarga de nombres de archivos a través de selenium .
Lo que puede hacer es usar un observador / observador de directorios para detectar cuándo se descarga el archivo y luego cambiarle el nombre como corresponde. Por favor, vea esta respuesta que contiene más detalles de seguimiento.