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
- Obtener el controlador del navegador: Descargue el chromedriver compatible con su versión de Chrome y guárdelo en la ruta
./controlador_bin/chromedriver. - Instalar dependencias: Ejecute el siguiente comando en la terminal:
pip install -r dependencias.txt - 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
publicacionesestá en desuso; se recomiendapublicaciones_completaspara 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.