Скачивание изображений из интернета с помощью Python и urllib

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для загрузки изображения с помощью Python, используя библиотеку urllib, воспользуйтесь следующим кодом:

Python
Скопировать код
import urllib.request

# URL изображения, которое нужно загрузить
img_url = 'http://example.com/image.jpg'

# Имя файла, под которым изображение будет сохранено на вашем компьютере
file_path = 'local_image.jpg'

# Загрузка изображения
urllib.request.urlretrieve(img_url, file_path)

Этот код загружает изображение по указанному URL и сохраняет его на вашем компьютере под именем local_image.jpg.

Кинга Идем в IT: пошаговый план для смены профессии

Пакетная загрузка изображений

Когда нужно обработать большое количество изображений в Python, удобно использовать цикл for и блок try-except для перехвата возможных ошибок при неудачной попытке загрузить изображение по тому или иному URL:

Python
Скопировать код
import urllib.request

# Список URL изображений
image_urls = ['http://example.com/image1.jpg', 'http://example.com/image2.jpg', ...]

# Директория для сохранения изображений
directory = '/path/to/your/directory/'

for url in image_urls:
    # Определение имени файла по URL
    filename = directory + url.split('/')[-1]
    try:
        urllib.request.urlretrieve(url, filename)
    except Exception as e:
        # Вывод сообщения об ошибке в случае неудачной загрузки
        print(f'Не удалось загрузить {url}: {e}')

Данный код поочередно загружает каждое изображение, сохраняя его в указанной директории.

Поиск и загрузка

Если у вас нет готового списка URL изображений, но имеется веб-страница, где их можно найти, примените urllib в сочетании с парсером, например, BeautifulSoup:

Python
Скопировать код
import urllib.request
from bs4 import BeautifulSoup
import requests

# URL веб-страницы-галереи
webpage_url = 'http://example.com/gallery'

# Получение содержимого страницы
page = requests.get(webpage_url)
soup = BeautifulSoup(page.content, 'html.parser')

# В поисках тегов изображений на странице
image_tags = soup.find_all('img')

# Директория для сохранения изображений
directory = '/path/to/your/directory/'

for tag in image_tags:
    # Извлечение URL изображения из атрибута 'src'
    img_url = tag['src']
    filename = directory + img_url.split('/')[-1]
    try:
        urllib.request.urlretrieve(img_url, filename)
    except Exception as e:
        # Обработка ошибок при неудачной загрузке 
        print(f'Невозможно загрузить {img_url}: {e}')

Пожалуйста, соблюдайте правила robots.txt веб-сайта и законы об авторском праве при загрузке изображений.

Дополнительная проверка с помощью requests

Для более удобной обработки ошибок перед загрузкой изображения можно использовать библиотеку requests:

Python
Скопировать код
import requests

img_url = 'http://example.com/image.jpg'
file_path = 'local_image.jpg'

response = requests.get(img_url, stream=True)

if response.status_code == 200:
    with open(file_path, 'wb') as file:
        # Запись файла по частям
        for chunk in response.iter_content(1024):
            file.write(chunk)
else:
    # Обработка ошибок при невозможности загрузки изображения
    print(f'Загрузить изображение не удалось: код ответа сервера {response.status_code}')

Оператор stream=True позволяет загружать большие изображения по частям, не перегружая память.

Визуализация

Можно представить работу urllib с изображениями следующим образом:

Markdown
Скопировать код
Представьте, что `urllib` – это курьер, который доставляет вам изображения из сети.

1. `urllib.request` находит изображение по его URL.
2. Функция `.urlretrieve()` загружает изображение по найденному адресу.
3. `filename` – это файл, под которым сохраняется изображение.

Несколько строк кода позволяют загрузить любое изображение из интернета:

Python
Скопировать код
import urllib.request
urllib.request.urlretrieve('http://example.com/picture.jpg', 'local-filename.jpg')

Теперь изображение сохранено на вашем диске.

Полезные материалы

  1. urllib — Работа с URL — Документация Python 3.12.2 — официальная документация модуля urllib.
  2. Как сохранить изображение на локальном диске с помощью Python, если известна его ссылка? – Stack Overflow — обсуждение вопроса на Stack Overflow.
  3. Руководство по применению библиотеки requests в Python – Real Python — подробности о библиотеке 'requests', изложенные простым языком.
  4. urllib.error — Классы исключений, которые вызываются urllib.request — Документация Python 3.12.2 — информация о возможных ошибках из официальной документации.
  5. Requests: HTTP для человека — Документация Requests 2.31.0 — детализированная документация по библиотеке 'requests'.
  6. Чтение и запись файлов в Python – PythonForBeginners.com — руководство по работе с файлами в Python.