2

I am trying to download images using selenium but I don't know how to direct those files at a desired location. Can anyone tell me how to do this?

3 Answers3

0

Use this code to set desire download location in Selenium-Python bindings :

executable_path = r"C:\\Selenium+Python\\chromedriver.exe"
options = webdriver.ChromeOptions()
prefs = {'download.default_directory' : '/path/to/dir'}
options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(executable_path, options=options)

You need to change /path/to/dir to your desired location.

cruisepandey
  • 28,520
  • 6
  • 20
  • 38
0

In case you are using a Chrome webdriver you can use these settings:

from selenium import webdriver

options = webdriver.ChromeOptions() 
options.add_argument("download.default_directory=C:/Downloads")

driver = webdriver.Chrome(chrome_options=options)

Here I set it to "C:/Downloads" but you can change it to any other destination.
For the Firefox you can use this:

from selenium import webdriver

profile = webdriver.FirefoxProfile()
profile.set_preference("browser.download.folderList", 2)
profile.set_preference("browser.download.manager.showWhenStarting", False)
profile.set_preference("browser.download.dir", 'PATH TO DESKTOP')
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/x-gzip")

driver = webdriver.Firefox(firefox_profile=profile)

Where 'PATH TO DESKTOP' is a path on your disk where you want to download your files

Prophet
  • 32,350
  • 22
  • 54
  • 79
0

as per this post to download using firefox

from selenium import webdriver
profile = webdriver.FirefoxProfile()
path = 'C:\\downloads'
profile.set_preference('browser.download.folderList', 2) # custom location
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference('browser.download.dir', path)
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'image/png', 'image/jpeg')

then select the button to download and click it.

if you only have the link of the image, i'd recommend using something like mechanize or urllib to download the contents

img = driver.find_element_by_xpath(xpath)
src = img.get_attribute('src')

# download the image
req = urllib.urlopen(src)

f = open(filename,'wb')
f.write(req.read())
f.close()

OmG3r
  • 1,658
  • 13
  • 25