Cómo construir análisis de búsqueda inteligente con Scrapeless y Google Gemini
Advanced Data Extraction Specialist
En este tutorial, construiremos un poderoso sistema de análisis de búsqueda combinando las capacidades de raspado web de Scrapeless con el análisis de IA de Google Gemini. Aprenderás a extraer datos de búsqueda de Google y generar automáticamente informes útiles.
Requisitos Previos
- Python 3.8+
- Clave de API de Scrapeless
- Clave de API de Google Gemini
- Conocimientos básicos de Python
Paso 1: Configuración de tu Entorno
1. Creando un Entorno Virtual de Python
Antes de instalar paquetes, se recomienda crear un entorno virtual para aislar las dependencias de tu proyecto:
En Windows:
# Crear entorno virtual
python -m venv scrapeless-gemini-env
# Activar el entorno
scrapeless-gemini-env\Scripts\activate
En macOS:
# Crear entorno virtual
python3 -m venv scrapeless-gemini-env
# Activar el entorno
source scrapeless-gemini-env/bin/activate
En Linux:
# Crear entorno virtual
python3 -m venv scrapeless-gemini-env
# Activar el entorno
source scrapeless-gemini-env/bin/activate
Nota: Verás (scrapeless-gemini-env) en tu indicador de terminal cuando el entorno virtual esté activo.
2. Instalando Paquetes Requeridos
Una vez que tu entorno virtual esté activo, instala los paquetes requeridos:
pip install requests google-generativeai python-dotenv pandas
3. Configuración del Entorno
Crea un archivo .env en tu directorio de proyecto para tus claves de API:
SCRAPELESS_API_TOKEN=tu_token_aquí
GEMINI_API_KEY=tu_clave_gemini_aquí
4. Obteniendo tus Claves de API
Para la clave de API de Gemini: (AIzaSyBGhCVNdBsVVHlRNLEPEADGVQeKmDvDEfI)
Visita Google AI Studio para generar tu clave de API Gemini gratuita. Simplemente inicia sesión con tu cuenta de Google y crea una nueva clave de API.
Para el token de API de Scrapeless:
Regístrate en Scrapeless para obtener tu token de API. La plataforma ofrece un generoso nivel gratuito perfecto para comenzar con la recopilación de datos de SERP.

Paso 2: Crear el Cliente de Scrapeless
Construyamos un cliente simple para interactuar con la API de Búsqueda de Google de Scrapeless:
import json
import requests
import os
from dotenv import load_dotenv
load_dotenv()
class ScrapelessClient:
def __init__(self):
self.token = os.getenv('SCRAPELESS_API_TOKEN')
self.host = "api.scrapeless.com"
self.url = f"https://{self.host}/api/v1/scraper/request"
self.headers = {"x-api-token": self.token}
def search_google(self, query, **kwargs):
"""Realizar una búsqueda en Google usando Scrapeless"""
payload = {
"actor": "scraper.google.search",
"input": {
"q": query,
"gl": kwargs.get("gl", "us"),
"hl": kwargs.get("hl", "en"),
"google_domain": kwargs.get("google_domain", "google.com"),
"location": kwargs.get("location", ""),
"tbs": kwargs.get("tbs", ""),
"start": str(kwargs.get("start", 0)),
"num": str(kwargs.get("num", 10))
}
}
response = requests.post(
self.url,
headers=self.headers,
data=json.dumps(payload)
)
if response.status_code != 200:
print(f"Error: {response.status_code} - {response.text}")
return None
return response.json()
Paso 3: Integrar Google Gemini para Análisis
Ahora añadamos análisis impulsado por IA a nuestros resultados de búsqueda:
import google.generativeai as genai
class SearchAnalyzer:
def __init__(self):
genai.configure(api_key=os.getenv('GEMINI_API_KEY'))
self.model = genai.GenerativeModel('gemini-1.5-flash')
self.scraper = ScrapelessClient()
def analyze_topic(self, topic):
"""Buscar y analizar un tema"""
# Paso 1: Obtener resultados de búsqueda
print(f"Buscando: {topic}")
search_results = self.scraper.search_google(topic, num=20)
if not search_results:
return None
# Paso 2: Extraer información clave
extracted_data = self._extract_results(search_results)
# Paso 3: Analizar con Gemini
prompt = f"""
Analiza estos resultados de búsqueda sobre "{topic}":
{json.dumps(extracted_data, indent=2)}
Proporciona:
1. Temas y tendencias clave
2. Principales fuentes de información
3. Perspectivas notables
4. Acciones recomendadas
Formatea tu respuesta como un informe claro y accionable.
"""
response = self.model.generate_content(prompt)
return {
"tema": topic,
"datos_de_búsqueda": extracted_data,
"análisis": response.text
}
```python
def _extraer_resultados(self, datos_busqueda):
"""Extraer datos relevantes de los resultados de búsqueda"""
resultados = []
if "resultados_orgánicos" in datos_busqueda:
for item in datos_busqueda["resultados_orgánicos"][:10]:
resultados.append({
"título": item.get("título", ""),
"extracto": item.get("extracto", ""),
"enlace": item.get("enlace", ""),
"fuente": item.get("enlace_mostrado", "")
})
return resultados
Paso 4: Construir Casos de Uso Prácticos
Caso de Uso 1: Análisis de Competidores
Importante: Antes de ejecutar el análisis de competidores, asegúrate de reemplazar los nombres de las empresas de ejemplo por tu empresa real y competidores en el código a continuación.
class MonitorCompetidores:
def __init__(self):
self.análisis = AnalizadorDeBúsqueda()
def analizar_competidores(self, nombre_empresa, competidores):
"""Analizar una empresa con respecto a sus competidores"""
todos_datos = {}
# Buscar cada empresa
for comp in [nombre_empresa] + competidores:
print(f"\nAnalizando: {comp}")
# Buscar noticias y actualizaciones recientes
consulta_noticias = f"{comp} últimas noticias actualizaciones 2025"
datos = self.análisis.analizar_tema(consulta_noticias)
if datos:
todos_datos[comp] = datos
# Generar análisis comparativo
aviso_comparativo = f"""
Compara {nombre_empresa} con los competidores basándote en estos datos:
{json.dumps(todos_datos, indent=2)}
Proporciona:
1. Posicionamiento competitivo
2. Fortalezas únicas de cada empresa
3. Oportunidades de mercado
4. Recomendaciones estratégicas para {nombre_empresa}
"""
respuesta = self.análisis.modelo.generar_contenido(aviso_comparativo)
return {
"empresa": nombre_empresa,
"competidores": competidores,
"análisis": respuesta.text,
"datos_crudos": todos_datos
}
Caso de Uso 2: Monitoreo de Tendencias
class MonitorTendencias:
def __init__(self):
self.análisis = AnalizadorDeBúsqueda()
self.raspador = ClienteSinRaspado()
def monitorear_tendencia(self, palabra_clave, rango_tiempo="d"):
"""Monitorear tendencias para una palabra clave"""
# Mapear rangos de tiempo al parámetro tbs de Google
mapa_tiempo = {
"h": "qdr:h", # Última hora
"d": "qdr:d", # Último día
"w": "qdr:w", # Última semana
"m": "qdr:m" # Último mes
}
# Buscar con filtro de tiempo
resultados = self.raspador.buscar_google(
palabra_clave,
tbs=mapa_tiempo.get(rango_tiempo, "qdr:d"),
num=30
)
if not resultados:
return None
# Analizar tendencias
aviso = f"""
Analiza las tendencias de "{palabra_clave}" basándote en los resultados de búsqueda recientes:
{json.dumps(resultados.get("resultados_orgánicos", [])[:15], indent=2)}
Identifica:
1. Patrones emergentes
2. Desarrollos clave
3. Sentimiento (positivo/negativo/neutral)
4. Predicciones futuras
5. Insights accionables
"""
respuesta = self.análisis.modelo.generar_contenido(aviso)
return {
"palabra_clave": palabra_clave,
"rango_tiempo": rango_tiempo,
"análisis": respuesta.text,
"conteo_resultados": len(resultados.get("resultados_orgánicos", []))
}
Paso 5: Crear la Aplicación Principal
def main():
# Inicializar componentes
monitor_competidores = MonitorCompetidores()
monitor_tendencias = MonitorTendencias()
# Ejemplo 1: Análisis de Competidores
# IMPORTANTE: Reemplaza estas empresas de ejemplo por tu empresa real y competidores
print("=== ANÁLISIS DE COMPETIDORES ===")
análisis = monitor_competidores.analizar_competidores(
nombre_empresa="OpenAI", # Reemplaza con el nombre de tu empresa
competidores=["Anthropic", "Google AI", "Meta AI"] # Reemplaza con tus competidores
)
print("\nResultados del Análisis Competitivo:")
print(análisis["análisis"])
# Guardar resultados
with open("análisis_competidores.json", "w") as f:
json.dump(análisis, f, indent=2)
# Ejemplo 2: Monitoreo de Tendencias
# IMPORTANTE: Reemplaza la palabra clave por tus términos específicos de la industria
print("\n\n=== MONITOREO DE TENDENCIAS ===")
tendencias = monitor_tendencias.monitorear_tendencia(
palabra_clave="regulación de inteligencia artificial", # Reemplaza con tus palabras clave
rango_tiempo="w" # Última semana
)
print("\nResultados del Análisis de Tendencias:")
print(tendencias["análisis"])
# Ejemplo 3: Análisis de Múltiples Temas
# IMPORTANTE: Reemplaza estos temas por tus temas específicos de la industria
print("\n\n=== ANÁLISIS DE MÚLTIPLES TEMAS ===")
temas = [
"aplicaciones empresariales de IA generativa", # Reemplaza con tus temas
"amenazas cibernéticas de IA",
"aprendizaje automático en salud"
Si no hay resultados de búsqueda:
return None
# Paso 2: Extraer información clave
datos_extraídos = self._extract_results(search_results)
# Paso 3: Analizar con Gemini
aviso = f"""
Analiza estos resultados de búsqueda sobre "{tema}":
{json.dumps(datos_extraídos, indent=2)}
Proporciona:
1. Temas y tendencias clave
2. Principales fuentes de información
3. Perspectivas notables
4. Acciones recomendadas
Formatea tu respuesta como un informe claro y accionable.
"""
respuesta = self.model.generate_content(aviso)
return {
"tema": tema,
"datos_de_búsqueda": datos_extraídos,
"análisis": respuesta.text
}
def _extract_results(self, datos_de_búsqueda):
"""Extraer datos relevantes de los resultados de búsqueda"""
resultados = []
if "organic_results" in datos_de_búsqueda:
for item in datos_de_búsqueda["organic_results"][:10]:
resultados.append({
"título": item.get("title", ""),
"fragmento": item.get("snippet", ""),
"enlace": item.get("link", ""),
"fuente": item.get("displayed_link", "")
})
return resultados
class MonitorCompetidores:
def init(self):
self.analyzer = SearchAnalyzer()
def analyze_competitors(self, nombre_empresa, competidores):
"""Analiza una empresa frente a sus competidores"""
todos_los_datos = {}
# Buscar para cada empresa
for comp in [nombre_empresa] + competidores:
print(f"\nAnalizando: {comp}")
# Buscar noticias y actualizaciones recientes
consulta_noticias = f"{comp} últimas noticias actualizaciones 2025"
datos = self.analyzer.analyze_topic(consulta_noticias)
if datos:
todos_los_datos[comp] = datos
# Añadir un retraso entre solicitudes
time.sleep(2)
# Generar análisis comparativo
aviso_comparativo = f"""
Compara {nombre_empresa} con competidores basado en estos datos:
{json.dumps(todos_los_datos, indent=2)}
Proporciona:
1. Posicionamiento competitivo
2. Fortalezas únicas de cada empresa
3. Oportunidades de mercado
4. Recomendaciones estratégicas para {nombre_empresa}
"""
respuesta = self.analyzer.model.generate_content(aviso_comparativo)
return {
"empresa": nombre_empresa,
"competidores": competidores,
"análisis": respuesta.text,
"datos_raw": todos_los_datos
}
class MonitorTendencias:
def init(self):
self.analyzer = SearchAnalyzer()
self.scraper = ScrapelessClient()
def monitor_trend(self, palabra_clave, rango_tiempo="d"):
"""Monitorear tendencias para una palabra clave"""
# Mapear rangos de tiempo al parámetro tbs de Google
mapa_tiempo = {
"h": "qdr:h", # Última hora
"d": "qdr:d", # Último día
"w": "qdr:w", # Última semana
"m": "qdr:m" # Último mes
}
# Buscar con filtro de tiempo
resultados = self.scraper.search_google(
palabra_clave,
tbs=mapa_tiempo.get(rango_tiempo, "qdr:d"),
num=30
)
if not resultados:
return None
# Analizar tendencias
aviso = f"""
Analiza las tendencias para "{palabra_clave}" basado en resultados de búsqueda recientes:
{json.dumps(resultados.get("organic_results", [])[:15], indent=2)}
Identifica:
1. Patrones emergentes
2. Desarrollos clave
3. Sentimiento (positivo/negativo/neutro)
4. Predicciones futuras
5. Perspectivas accionables
"""
respuesta = self.analyzer.model.generate_content(aviso)
return {
"palabra_clave": palabra_clave,
"rango_tiempo": rango_tiempo,
"análisis": respuesta.text,
"conteo_resultados": len(resultados.get("organic_results", []))
}
class ExportadorDatos:
@staticmethod
def export_to_csv(datos, nombre_archivo=None):
"""Exportar resultados de búsqueda a CSV"""
if nombre_archivo is None:
nombre_archivo = f"resultados_búsqueda_{datetime.now().strftime('%Y%m%d_%H%M%S')}.csv"
# Aplanar la estructura de datos
filas = []
for item in datos:
if isinstance(item, dict) and "search_data" in item:
for resultado in item["search_data"]:
filas.append({
"tema": item.get("tema", ""),
"título": resultado.get("title", ""),
"fragmento": resultado.get("snippet", ""),
"enlace": resultado.get("link", ""),
"fuente": resultado.get("source", "")
})
df = pd.DataFrame(filas)
python
df.to_csv(nombre_archivo, index=False)
print(f"Datos exportados a {nombre_archivo}")
return nombre_archivo
@staticmethod
def crear_reporte_html(datos_analisis, nombre_archivo="reporte.html"):
"""Crear un reporte HTML a partir de los datos de análisis"""
html = f"""
<!DOCTYPE html>
<html>
<head>
<title>Reporte de Análisis de Búsqueda</title>
<style>
body {{ font-family: Arial, sans-serif; margin: 40px; }}
.section {{ margin-bottom: 30px; padding: 20px;
background-color: #f5f5f5; border-radius: 8px; }}
h1 {{ color: #333; }}
h2 {{ color: #666; }}
pre {{ white-space: pre-wrap; word-wrap: break-word; }}
</style>
</head>
<body>
<h1>Reporte de Análisis de Búsqueda</h1>
<p>Generado: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}</p>
<div class="section">
<h2>Resultados del Análisis</h2>
<pre>{datos_analisis.get('analysis', 'No hay análisis disponible')}</pre>
</div>
<div class="section">
<h2>Resumen de Datos</h2>
<p>Tema: {datos_analisis.get('topic', 'N/A')}</p>
<p>Resultados analizados: {len(datos_analisis.get('search_data', []))}</p>
</div>
</body>
</html>
"""
with open(nombre_archivo, 'w') as f:
f.write(html)
print(f"Reporte HTML creado: {nombre_archivo}")
def main():
# Inicializar componentes
monitor_competencia = CompetitorMonitor()
monitor_tendencias = TrendMonitor()
exportador = DataExporter()
# Ejemplo 1: Análisis de Competencia
print("=== ANÁLISIS DE COMPETENCIA ===")
analisis = monitor_competencia.analyze_competitors(
company_name="OpenAI",
competitors=["Anthropic", "Google AI", "Meta AI"]
)
print("\nResultados del Análisis Competitivo:")
print(analisis["analysis"])
# Guardar resultados
with open("analisis_producto.json", "w") as f:
json.dump(analisis, f, indent=2)
# Ejemplo 2: Monitoreo de Tendencias
print("\n\n=== MONITOREO DE TENDENCIAS ===")
tendencias = monitor_tendencias.monitor_trend(
keyword="regulación de inteligencia artificial",
time_range="w" # Semana pasada
)
print("\nResultados del Análisis de Tendencias:")
print(tendencias["analysis"])
# Ejemplo 3: Análisis Multitemático
print("\n\n=== ANÁLISIS MULTITEMÁTICO ===")
temas = [
"aplicaciones empresariales de IA generativa",
"amenazas cibernéticas de IA",
"salud en aprendizaje automático"
]
analizador = SearchAnalyzer()
todos_los_resultados = []
for tema in temas:
print(f"\nAnalizando: {tema}")
resultado = analizador.analyze_topic(tema)
if resultado:
todos_los_resultados.append(resultado)
# Guardar análisis individual
nombre_archivo = f"{tema.replace(' ', '_')}_analisis.txt"
with open(nombre_archivo, "w") as f:
f.write(resultado["analysis"])
print(f"Análisis guardado en {nombre_archivo}")
# Retraso entre solicitudes
time.sleep(2)
# Exportar todos los resultados a CSV
if todos_los_resultados:
archivo_csv = exportador.export_to_csv(todos_los_resultados)
print(f"\nTodos los resultados exportados a: {archivo_csv}")
# Crear reporte HTML para el primer resultado
if todos_los_resultados[0]:
exportador.create_html_report(todos_los_resultados[0])
if __name__ == "__main__":
main()
Conclusión
¡Felicidades! Has construido con éxito un sistema integral de análisis de búsqueda que aprovecha el poder de las capacidades de scraping web de grado empresarial de Scrapeless junto con el análisis avanzado de IA de Google Gemini. Esta solución inteligente transforma datos de búsqueda en bruto en información empresarial procesable de manera automática.
Lo que Has Logrado
A través de este tutorial, has creado un sistema modular y listo para producción que incluye:
- Recolección de Datos Automatizada: Resultados de búsqueda de Google en tiempo real a través de la API de Scrapeless
- Análisis Potenciado por IA: Generación de información inteligente utilizando Google Gemini
- Inteligencia Competitiva: Monitoreo integral del paisaje competitivo
- Detección de Tendencias: Identificación y análisis de tendencias del mercado en tiempo real
- Informes en Múltiples Formatos: Exportaciones CSV e informes HTML para compartir con interesados
- Arquitectura Escalable: Diseño modular para fácil personalización y extensión
Beneficios Clave para tu Negocio
Toma de Decisiones Estratégica: Transforma los datos de búsqueda en información estratégica que impulsa decisiones comerciales informadas y posicionamiento competitivo.
Eficiencia Temporal: Automatiza horas de investigación manual en minutos de análisis automatizado, liberando a tu equipo para un trabajo estratégico de mayor valor.
Conciencia del Mercado: Mantente a la vanguardia de las tendencias de la industria, movimientos de competidores y oportunidades emergentes con capacidades de monitoreo en tiempo real.
Inteligencia Rentable: Aprovecha herramientas de nivel empresarial a una fracción del costo de las soluciones tradicionales de investigación de mercado.
Ampliando Tu Sistema
La arquitectura modular facilita la extensión de la funcionalidad:
- Fuentes de Datos Adicionales: Integra APIs de redes sociales, feeds de noticias o bases de datos de la industria
- Análisis Avanzados: Agrega análisis de sentimientos, reconocimiento de entidades o modelado predictivo
- Visualización: Crea paneles interactivos usando herramientas como Streamlit o Dash
- Alertas: Implementa notificaciones en tiempo real para cambios críticos en el mercado
- Soporte Multilingüe: Amplía la monitorización a mercados globales con búsqueda localizada
Mejores Prácticas para el Éxito
- Comienza Pequeño: Inicia con palabras clave específicas y amplía gradualmente el alcance de tu monitoreo
- Itera Prompts: Refina continuamente tus prompts de IA en función de la calidad de los resultados
- Valida Resultados: Realiza una verificación cruzada de las percepciones de IA con una verificación manual inicialmente
- Actualizaciones Regulares: Mantén actualizadas tus listas de competidores y palabras clave
- Retroalimentación de Partes Interesadas: Recoge aportes de los usuarios finales para mejorar la relevancia de los informes
Reflexiones Finales
Este sistema de análisis de búsqueda representa un paso significativo hacia la inteligencia empresarial basada en datos. Al combinar la recopilación de datos confiables de Scrapeless con las capacidades analíticas de Gemini, has creado una herramienta poderosa que puede adaptarse a prácticamente cualquier industria o caso de uso.
La inversión en la construcción de este sistema dará frutos a través de una mayor conciencia del mercado, inteligencia competitiva y capacidades de toma de decisiones estratégicas. A medida que continúas refinando y ampliando el sistema, descubrirás nuevas oportunidades para aprovechar los datos de búsqueda para el crecimiento empresarial.
Recuerda que la implementación exitosa no depende solo de la tecnología, sino de qué tan bien integres estos conocimientos en tus procesos comerciales y flujos de trabajo de toma de decisiones.
Para recursos adicionales, funciones avanzadas y documentación de API, visita Documentación de Scrapeless.
En Scrapeless, solo accedemos a datos disponibles públicamente y cumplimos estrictamente con las leyes, regulaciones y políticas de privacidad del sitio web aplicables. El contenido de este blog es sólo para fines de demostración y no implica ninguna actividad ilegal o infractora. No ofrecemos garantías y renunciamos a toda responsabilidad por el uso de la información de este blog o enlaces de terceros. Antes de realizar cualquier actividad de scraping, consulte a su asesor legal y revise los términos de servicio del sitio web de destino u obtenga los permisos necesarios.



