Полное руководство: загрузка изображений с использованием библиотеки запросов Python

Загрузка изображений из Интернета — распространенная задача в различных приложениях, таких как сбор данных из Интернета, анализ данных или создание наборов данных изображений. Python предоставляет несколько библиотек, упрощающих загрузку изображений, одна из самых популярных — библиотека requests. В этой статье мы рассмотрим различные способы загрузки изображений с помощью библиотеки requests, а также приведем примеры кода.

Метод 1: базовая загрузка изображения
Самый простой способ загрузить изображение с помощью библиотеки requests— отправить запрос GET на URL-адрес изображения и сохранить содержимое ответа в файл.

import requests
url = "https://example.com/image.jpg"
response = requests.get(url)
with open("image.jpg", "wb") as file:
    file.write(response.content)

Метод 2: потоковая загрузка изображений
Иногда изображения могут быть большими, и загрузка их всех одновременно может занимать значительный объем памяти. В таких случаях лучше транслировать содержимое изображения и сохранять его частями.

import requests
url = "https://example.com/image.jpg"
response = requests.get(url, stream=True)
with open("image.jpg", "wb") as file:
    for chunk in response.iter_content(chunk_size=128):
        file.write(chunk)

Метод 3: обработка ошибок и перенаправлений
При загрузке изображений важно обрабатывать потенциальные ошибки и перенаправления. Библиотека requestsпредоставляет встроенные методы для обработки этих сценариев.

import requests
url = "https://example.com/image.jpg"
response = requests.get(url)
response.raise_for_status()  # Raise an exception if the request was unsuccessful
if response.history:
    final_url = response.url  # Handle redirects
with open("image.jpg", "wb") as file:
    file.write(response.content)

Метод 4: загрузка нескольких изображений
Чтобы эффективно загрузить несколько изображений, вы можете использовать параллелизм с использованием потоков или asyncio. Вот пример использования потоков:

import requests
from concurrent.futures import ThreadPoolExecutor
urls = ["https://example.com/image1.jpg", "https://example.com/image2.jpg"]
def download_image(url):
    response = requests.get(url)
    with open(f"{url.split('/')[-1]}", "wb") as file:
        file.write(response.content)
with ThreadPoolExecutor() as executor:
    executor.map(download_image, urls)

В этой статье мы рассмотрели несколько способов загрузки изображений с помощью библиотеки Python requests. Мы рассмотрели базовую загрузку изображений, потоковую загрузку, обработку ошибок и перенаправлений, а также эффективную загрузку нескольких изображений. В зависимости от вашего конкретного варианта использования вы можете выбрать наиболее подходящий метод.

Не забывайте использовать эти методы ответственно и уважать авторские права и права на использование загружаемых изображений.