Home > Backend Development > Python Tutorial > How to Properly Download Images Using Python's `requests` Module?

How to Properly Download Images Using Python's `requests` Module?

Susan Sarandon
Release: 2024-12-11 18:06:17
Original
688 people have browsed it

How to Properly Download Images Using Python's `requests` Module?

Downloading Images with Python's requests Module

When attempting to download an image from the internet using Python's requests module, you may encounter issues with the code compared to using urllib2's urlopen method. This article addresses these challenges and provides solutions.

Original Code for Reference

img = urllib2.urlopen(settings.STATICMAP_URL.format(**data))
with open(path, 'w') as f:
    f.write(img.read())
Copy after login

New Code for Reference

r = requests.get(settings.STATICMAP_URL.format(**data))
if r.status_code == 200:
    img = r.raw.read()
    with open(path, 'w') as f:
        f.write(img)
Copy after login

Problem

The issue arises when using requests because the attribute from the response that contains the image data is different from that of urlopen in urllib2.

Solution

To retrieve the image data from the requests response, there are two options:

  1. Using the response.raw file object: This method requires setting decode_content to True and then streaming the data to a file object:
r = 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)        
Copy after login
  1. Iterating over the response: This method ensures that requests decodes the data during iteration:
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)
Copy after login

By setting stream=True in the requests call, it prevents downloading the entire image into memory at once. The file should be opened in binary mode to avoid errors.

The above is the detailed content of How to Properly Download Images Using Python's `requests` Module?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template