Como Fazer Download Automático de Imagens de Sites com Python

Na era da informação, muitas vezes precisamos baixar imagens automaticamente de sites — seja para criar um dataset de inteligência artificial, salvar capas de produtos para uma loja virtual ou simplesmente automatizar uma tarefa repetitiva.

Fazer isso manualmente é cansativo e pouco produtivo. Mas com Python podemos criar um robô simples e eficiente para baixar imagens automaticamente.

Neste artigo, você vai aprender:


🔹 O que é Web Scraping?

Web scraping é a técnica de coletar informações de páginas da web de forma automatizada.
No nosso caso, o alvo são as imagens: vamos buscar todas as imagens de uma página e baixá-las para o computador.

Ferramentas principais em Python:


🔹 Estrutura de um código simples

Antes de começar, instale as bibliotecas necessárias:

pip install requests beautifulsoup4

Agora, um exemplo básico para baixar imagens de um site:

import requests
from bs4 import BeautifulSoup
import os

# URL do site alvo
url = "https://www.exemplo.com"

# Pasta onde as imagens serão salvas
pasta = "imagens"

# Criar a pasta, se não existir
if not os.path.exists(pasta):
    os.makedirs(pasta)

# Fazer a requisição da página
resposta = requests.get(url)
soup = BeautifulSoup(resposta.text, "html.parser")

# Encontrar todas as tags de imagem
imagens = soup.find_all("img")

for i, img in enumerate(imagens):
    src = img.get("src")

    if src:
        # Corrigir URLs relativas
        if src.startswith("//"):
            src = "https:" + src
        elif src.startswith("/"):
            src = url + src

        try:
            # Baixar a imagem
            img_bytes = requests.get(src).content
            nome_arquivo = os.path.join(pasta, f"imagem_{i+1}.jpg")

            with open(nome_arquivo, "wb") as f:
                f.write(img_bytes)

            print(f"✅ Imagem salva: {nome_arquivo}")
        except Exception as e:
            print(f"❌ Erro ao baixar {src}: {e}")

🔹 Como funciona o código?

  1. Fazemos a requisição HTTP para pegar o conteúdo do site.

  2. Usamos o BeautifulSoup para analisar o HTML.

  3. Pegamos todas as tags <img> e coletamos o atributo src.

  4. Corrigimos URLs relativas (que começam com /).

  5. Baixamos os arquivos com requests.get() e salvamos localmente.


🔹 Exemplo prático – Baixar imagens do Unsplash (grátis e legal)

O site Unsplash oferece imagens livres para uso. Vamos criar um exemplo para baixar as primeiras imagens da página inicial:

url = "https://unsplash.com"

resposta = requests.get(url, headers={"User-Agent": "Mozilla/5.0"})
soup = BeautifulSoup(resposta.text, "html.parser")

imagens = soup.find_all("img")

for i, img in enumerate(imagens[:10]):  # pega só as 10 primeiras
    src = img.get("src")

    if src and src.startswith("http"):
        nome_arquivo = os.path.join(pasta, f"unsplash_{i+1}.jpg")
        with open(nome_arquivo, "wb") as f:
            f.write(requests.get(src).content)
        print(f"✅ Imagem salva: {nome_arquivo}")

🔹 Organizando em subpastas

Se quiser salvar imagens de vários sites diferentes, podemos criar subpastas automáticas com base no nome do domínio:

from urllib.parse import urlparse

dominio = urlparse(url).netloc
pasta_site = os.path.join("imagens", dominio)

if not os.path.exists(pasta_site):
    os.makedirs(pasta_site)

Assim, imagens do unsplash.com ficam em imagens/unsplash.com/.


🔹 Possíveis melhorias

  • Tratar duplicadas: verificar se a imagem já existe antes de salvar.

  • Nomear pelas URLs: em vez de imagem_1.jpg, usar parte da URL original.

  • Baixar em paralelo: usar concurrent.futures para acelerar downloads.

  • Buscar por palavras-chave: automatizar a busca em sites como Google Images ou Bing (cuidado com limites).


🔹 Cuidados Legais e Éticos

⚠️ Importante: não é permitido baixar imagens de qualquer site sem verificar os direitos de uso.

  • Sempre cheque os termos de uso do site.

  • Prefira bancos de imagens gratuitos, como Unsplash, Pexels ou Pixabay.

  • Evite sobrecarregar servidores (coloque pausas entre requisições, se baixar muitas imagens).


🔹 Conclusão

Criar um sistema automático para download de imagens em Python é uma excelente forma de:
✔ Aprender web scraping.
✔ Praticar manipulação de arquivos.
✔ Automatizar tarefas que seriam manuais e demoradas.

Esse projeto pode evoluir para algo maior, como:


💡 Desafio para você: adapte o código para aceitar lista de URLs em um arquivo .txt, baixando imagens de todos os sites automaticamente.

Comentários

Postagens mais visitadas deste blog

Manipulação de Arquivos no C#: Como Ler, Escrever e Trabalhar com Arquivos de Forma Simples

Laços de Repetição em Python: Conceitos e Exemplos Práticos

C# e Banco de Dados: Como Conectar e Realizar Operações com SQL Server