How to download image using requests How to download image using requests python python

How to download image using requests


You can either use the response.raw file object, or iterate over the response.

To use the response.raw file-like object will not, by default, decode compressed responses (with GZIP or deflate). You can force it to decompress for you anyway by setting the decode_content attribute to True (requests sets it to False to control decoding itself). You can then use shutil.copyfileobj() to have Python stream the data to a file object:

import requestsimport shutilr = requests.get(settings.STATICMAP_URL.format(**data), stream=True)if r.status_code == 200:    with open(path, 'wb') as f:        r.raw.decode_content = True        shutil.copyfileobj(r.raw, f)        

To iterate over the response use a loop; iterating like this ensures that data is decompressed by this stage:

r = requests.get(settings.STATICMAP_URL.format(**data), stream=True)if r.status_code == 200:    with open(path, 'wb') as f:        for chunk in r:            f.write(chunk)

This'll read the data in 128 byte chunks; if you feel another chunk size works better, use the Response.iter_content() method with a custom chunk size:

r = requests.get(settings.STATICMAP_URL.format(**data), stream=True)if r.status_code == 200:    with open(path, 'wb') as f:        for chunk in r.iter_content(1024):            f.write(chunk)

Note that you need to open the destination file in binary mode to ensure python doesn't try and translate newlines for you. We also set stream=True so that requests doesn't download the whole image into memory first.


Get a file-like object from the request and copy it to a file. This will also avoid reading the whole thing into memory at once.

import shutilimport requestsurl = 'http://example.com/img.png'response = requests.get(url, stream=True)with open('img.png', 'wb') as out_file:    shutil.copyfileobj(response.raw, out_file)del response


How about this, a quick solution.

import requestsurl = "http://craphound.com/images/1006884_2adf8fc7.jpg"response = requests.get(url)if response.status_code == 200:    with open("/Users/apple/Desktop/sample.jpg", 'wb') as f:        f.write(response.content)