Extracción Eficiente de Datos de Instagram Sin Restricciones de API con un Crawler Automatizado

Introducción

Para obtener datos de publicaciones, perfiles y hashtags de Instagram sin las limitaciones de la API oficial, se puede emplear un crawler que opera mediante la simulación del navegador. Esta herramienta permite evadir restricciones de frecuencia de solicitudes y acceder a datos completos, incluyendo la posibilidad de automatizar interacciones como los "me gusta" para mejorar el engagement.

Ventajas sobre la API Oficial

La API de Instagram impone límites estrictos, como restricciones en la tasa de solicitudes y acceso limitado a datos. Un crawler basado en navegador ofrece flexibilidad para:

  • Extraer publicaciones, información de perfiles y datos por hashtags.
  • Realizar acciones automatizadas, tales como dar "me gusta" a publicaciones.
  • Persoanlizar la extracción para incluir comentarios, conteos de "me gusta", menciones de usuarios y etiquetas.

Requisitos e Instalación

Requisitos Previos

  • Navegador Chrome instalado.
  • Entorno Python 3.x configurado.

Pasos de Configuración

  1. Obtener el controlador del navegador: Descargue el chromedriver compatible con su versión de Chrome y guárdelo en la ruta ./controlador_bin/chromedriver.
  2. Instalar dependencias: Ejecute el siguiente comando en la terminal:
    pip install -r dependencias.txt
  3. Preparar archivo de configuración: Copie la plantilla de configuración con:
    cp config_crawler/secreto.py.dist config_crawler/secreto.py

Autenticación de Usuario

Edite el archivo config_crawler/secreto.py para establecer las credenciales de la cuenta de Instagram. Modifique las variables usuario_ig y clave_ig como se muestra:

usuario_ig = 'ejemplo_usuario'
clave_ig = 'contraseña_segura'

Funcionalidades del Crawler

Modos de Operación

El crawler soporta múltiples modos de extracción:

  • publicaciones: Obtiene URL, título y primera imagen de las publicaciones.
  • publicaciones_completas: Extrae datos detallados como todas las imágenes, fecha, comentarios, conteo de "me gusta" y vistas.
  • perfil: Recopila información del perfil de usuario.
  • hashtag: Descarga publicaciones asociadas a un hashtag específico.

Uso desde la Línea de Comandos

El script principal ofrece argumentos para personalizar la extracción:

argumentos posicionales:
  modo
    opciones: [publicaciones, publicaciones_completas, perfil, hashtag]

argumentos opcionales:
  -n CANTIDAD, --cantidad CANTIDAD
                        número de publicaciones a retornar
  -u USUARIO, --usuario USUARIO
                        nombre de usuario de Instagram
  -t ETIQUETA, --etiqueta ETIQUETA
                        nombre del hashtag
  -o SALIDA, --salida SALIDA
                        nombre del archivo de salida (formato json)
  --debug               mostrar automatización del navegador en tiempo real
  --obtener_comentarios obtener comentarios de las publicaciones
  --obtener_megusta     obtener conteo de "me gusta" o reproducciones
  --obtener_fans        listar usuarios que dieron "me gusta"
  --obtener_menciones   extraer usuarios mencionados en descripciones o comentarios
  --obtener_etiquetas   extraer hashtags de descripciones o comentarios
  --obtener_detalles    incluir usuario y descripción de foto (solo para búsqueda por hashtag)

Ejemplos Prácticos

Extraer 100 publicaciones completsa de un usuario:

python scraper.py publicaciones_completas -u usuario_gastronomico -n 100 -o ./resultados

Buscar publicaciones por hashtag con detalles adicionales:

python scraper.py hashtag -t comida_peruana -o ./resultados --obtener_detalles

Obtener publicaciones con lista de usuarios que dieron "me gusta" y conteo:

python scraper.py publicaciones_completas -u viajero_mundial -n 10 --obtener_fans --obtener_megusta

Automatización de Interacciones

El crawler incluye un módulo para dar "me gusta" automáticamente a publicaciones, útil para aumentar la visibilidad. Ejemplo de uso:

python automegusta.py recetas -n 500

Este comando ejecuta "me gusta" en 500 publicaciones relacionadas con el hashtag "recetas".

Consideraciones Técnicas

  • El modo publicaciones está en desuso; se recomienda publicaciones_completas para datos completos.
  • Si no se especifica -n, el valor predeterminado es 100 publicaciones para hashtags y todas las disponibles para usuarios.
  • Al omitir -o, los resultados se muestran en la consola.
  • Extracciones superiores a 1000 publicaciones pueden ser lentas debido a las contramedidas de Instagram.
  • No se aconseja usar la herramienta para usuarios con más de 10000 publicaciones.

Estructura de los Datos

El modo publicaciones genera un conjunto de datos básico: URL, título y enlace a la primera imagen. En contraste, publicaciones_completas produce un JSON detallado que incluye todas las imágenes, marca de tiempo, comentarios, métricas de interacción y más.

Componentes del Crawler

El sistema se divide en módulos especializados:

  • scraper.py: Script principal con interfaz de línea de comandos.
  • nucleo/scraper.py: Lógica central de extracción de datos.
  • nucleo/extraccion.py: Funcionalidades para obtener comentarios, "me gusta" y menciones.
  • nucleo/navegador.py: Control automatizado del navegador mediante Selenium.
  • nucleo/utilidades.py: Herramientas auxiliares como mecanismos de reintento y validación de datos.

Etiquetas: instagram Python web-scraping Selenium data-extraction

Publicado el 7-1 08:02