Logo
Formaciones Disponibles
Guía Completa para Scraping de Imágenes usando Google Custom Search con Python

Guía Completa para Scraping de Imágenes usando Google Custom Search con Python

Scraping de imágenes con Python y Google Custom Search: Filtrando Resultados para mejorar la calidad

28/10/2024

Herramientas SEO Python SEO Automatizaciones SEO

Scraping de imágenes con precisión: usa Google Custom Search y Python para obtener solo lo que necesitas

¿Quieres crear una biblioteca visual de imágenes especializadas y evitar resultados irrelevantes al hacer scraping en la web? Hoy te enseñaré cómo usar Google Custom Search o Programmable Search Engine junto con Python para hacer scraping de imágenes de forma más eficiente, enfocándote en fuentes específicas que tú mismo puedes definir. Esto es ideal si buscas mejorar la calidad de las imágenes descargadas, como en el caso de armar una colección de dinosaurios usando Google Colab. ¡Vamos a sumergirnos en este proceso paso a paso!

Por Qué Usar Google Custom Search para Scraping de Imágenes?

La Custom Search Engine (CSE) de Google, ahora conocida como Programmable Search Engine (PSE), permite crear un motor de búsqueda que se enfoca en ciertos sitios web de tu elección. Esto es particularmente útil para proyectos de scraping, ya que:

  • Puedes limitar los dominios en los que deseas buscar, asegurando que las imágenes provengan de fuentes confiables y relevantes.
  • Automatiza la búsqueda y descarga de imágenes con Python, integrando la API de Google directamente en tu flujo de trabajo.
  • Filtra por tipo de contenido, como imágenes, videos o resultados de texto, ajustándose a lo que necesitas.

Paso 1: Configuración del Custom Search para Scraping eficiente

Antes de empezar con el código, necesitas realizar dos configuraciones clave:

  1. Crear tu motor de búsqueda personalizado (CSE):
    • Dirígete a Programmable Search Engine
    • Configura un motor de búsqueda y define los dominios que prefieras, como sitios de museos, universidades, o bibliotecas, si buscas imágenes de temas específicos (en nuestro caso, dinosaurios).
    • Obtén el ID del motor de búsqueda (CX), que es esencial para hacer consultas con la API.

En este caso he creado un buscador que busque imágenes en las siguientes URLs :

  1. Obtener una API Key de Google:
    • Crea un proyecto en la Consola de Google Cloud.
    • Habilita la Custom Search JSON API y genera una API Key en la sección de "Credenciales".
    • Esta clave permite hasta 100 consultas gratuitas diarias, lo cual es suficiente para la mayoría de proyectos pequeños.
copiar-el-id-crear-buscador
proyecto-google-cloud-crear
proyecto-google-cloud-seleccionar
proyecto-google-cloud-buscar-api
proyecto-google-cloud-habilitar-api
proyecto-google-cloud-credenciales
proyecto-google-cloud-credenciales-crear
proyecto-google-cloud-credenciales-copiar-key

Paso 2: Implementación del Script en Google Colab

Con las credenciales listas, el siguiente paso es escribir un script de Python en Google Colab para buscar y descargar imágenes de dinosaurios.

  1. Importar Librerías y Configurar la Función de Búsqueda
import os

def search_dinosaur_image(dino_name, api_key, cx):
"""
Busca una imagen de un dinosaurio utilizando la API de Google Custom Search.

Args:
    dino_name (str): Nombre del dinosaurio a buscar.
    api_key (str): API Key de Google.
    cx (str): ID del motor de búsqueda personalizado.

Returns:
    str: URL de la imagen encontrada o None si no se encuentra.
"""
query = f"{dino_name} dinosaurio"
url = f'https://www.googleapis.com/customsearch/v1?q={query}&cx={cx}&searchType=image&key={api_key}&num=1'

try:
    response = requests.get(url)
    response.raise_for_status()
    data = response.json()

    if 'items' in data and data['items']:
        image_url = data['items'][0]['link']
        print(f"Imagen encontrada para {dino_name}: {image_url}")
        return image_url
    else:
        print(f"No se encontró imagen para {dino_name}.")
        return None
except requests.exceptions.RequestException as e:
    print(f"Error al buscar imagen de {dino_name}: {e}")
    return None

Esta función realiza una búsqueda de imágenes utilizando la Custom Search API de Google, retornando la URL de la imagen encontrada. La clave aquí es el parámetro cx, que define el conjunto de sitios donde Google buscará las imágenes, asegurando resultados más precisos.

Paso 2.2: Descargar y Guardar Imágenes

    try:
        img_data = requests.get(url).content
        with open(save_path, 'wb') as handler:
            handler.write(img_data)
        print(f"Imagen guardada en {save_path}")
    except Exception as e:
        print(f"Error al descargar la imagen: {e}")

La función download_image descarga y guarda la imagen en la ruta especificada. Este paso es fundamental para crear una biblioteca visual local en tu entorno de Colab.

Paso 3: Automatizar la Descarga de Imágenes

Vamos a buscar imágenes de varios dinosaurios y guardarlas en Google Colab:


api_key = 'TU_API_KEY'  # Reemplaza con tu API Key
cx = 'TU_CX'  # Reemplaza con el ID de tu motor de búsqueda

os.makedirs('dinosaur_images', exist_ok=True)

for dino in dinosaurios:
image_url = search_dinosaur_image(dino, api_key, cx)
if image_url:
save_path = f'dinosaurimages/{dino.replace(" ", "")}.jpg'
download_image(image_url, save_path)

Este script crea una carpeta dinosaur_images y guarda cada imagen bajo el nombre del dinosaurio correspondiente. Al definir un conjunto de dominios confiables en tu Custom Search, puedes obtener imágenes de mejor calidad y con más relevancia.

Paso 4: Revisión de las Imágenes Descargadas

Puedes visualizar las imágenes directamente en Google Colab para asegurarte de que se han descargado correctamente:

import glob

for image_path in glob.glob('dinosaur_images/*.jpg'):
print(image_path)
display(Image(filename=image_path))

fotos-dinos-colab-final

Beneficios de usar Google Custom Search para Scraping

La verdadera ventaja de usar un motor de búsqueda personalizado radica en la precisión de los resultados:

  • Fuentes Confiables: Al limitar las búsquedas a ciertos dominios, te aseguras de que las imágenes provengan de sitios con alta credibilidad, evitando contenido de baja calidad o irrelevante.
  • Optimización de Consultas: Filtrar por dominios o tipos de archivos puede ahorrar tiempo y recursos, especialmente cuando tienes un límite de consultas diarias con la API.
  • Mayor Control sobre el Contenido: Esto es crucial en proyectos donde la calidad del contenido es fundamental, como la creación de material educativo o colecciones temáticas.

Si buscas mejorar tus resultados de scraping de imágenes, integrar Google Custom Search en tu flujo de trabajo puede ser un gran paso adelante. No solo te permite obtener resultados más específicos, sino que también te brinda el control necesario para construir una biblioteca visual con contenido relevante y de calidad. Ya sea que estés trabajando con dinosaurios o cualquier otro tema, este enfoque es adaptable a cualquier proyecto.

Ahora, ¡es tu turno de poner manos a la obra! ¿Qué tipo de imágenes vas a buscar con esta herramienta? Comparte tus experiencias y descubrimientos en los comentarios. ¡Feliz scraping!

P.D duckduckgo.com y Selenium son gratis y sin lio de APIS xD :) también son buenas opciones.