Ir al contenido

Cómo desbloquear superpoderes eliminando las tendencias de Google

La herramienta Tendencias de Google, disponible gratuitamente, proporciona una mina de oro de datos de búsqueda que pueden darle a su empresa una ventaja. Al recopilar estos datos a escala, obtienes inteligencia valiosa para superar a la competencia. Esta guía completa le enseñará cómo aprovechar los superpoderes del scraping de Google Trends utilizando Python.

Google Trends ha nivelado el campo de juego al democratizar el acceso a los datos agregados del volumen de búsqueda. Las empresas inteligentes utilizan cada vez más las tendencias para obtener información única que sirva de base para tomar decisiones de alto impacto:

  • 89% de los vendedores digitales Confíe en las tendencias para la investigación de palabras clave según encuestas recientes. Los datos del volumen de búsqueda ayudan a optimizar el contenido y la estrategia de SEO.

  • Las tendencias ayudaron Spotify identifica mercados sin explotar expandirse para incluir a Rumania y Croacia según los patrones de búsqueda de música.

  • Empresas financieras como Hedgeye extraer datos de tendencias sobre marcas minoristas para predecir el desempeño económico utilizando el interés de búsqueda como señal.

  • VC y startups Utilice Tendencias para cuantificar la demanda del mercado de productos antes del lanzamiento e identificar nuevas oportunidades de negocio.

  • Tendencias incluso picos de casos de COVID previstos identificando el creciente interés en la búsqueda de síntomas en regiones específicas.

Las aplicaciones son infinitas, pero la búsqueda manual de datos es lenta y limitada. Ahí es donde entra en juego el web scraping para automatizar el proceso y desbloquear el verdadero poder de Trends.

Configuración de un raspador web de Python

Antes de realizar el scraping, analicemos los requisitos previos y las herramientas clave:

Aprende Python

Es necesario dominar Python para implementar un raspador. Recomiendo completar primero cursos en línea sobre los conceptos básicos de Python y los conceptos orientados a objetos. Algunos buenos recursos iniciales son:

Las extensas bibliotecas de Python y su sintaxis simple lo convierten en una opción perfecta para el web scraping.

Bibliotecas raspadoras

Estas bibliotecas de Python proporcionan capacidades de raspado:

  • Solicitudes – Envía solicitudes HTTP para descargar páginas web. Más liviano que Selenium.

  • BeautifulSoup – Analiza documentos HTML y XML para extraer datos utilizando selectores CSS y expresiones regulares.

  • Selenio – Inicia y controla navegadores como Chrome y Firefox para la automatización. Puede evitar los problemas de representación de JavaScript.

  • Scrapy – Marco completo para grandes proyectos de scraping con herramientas como spiders, pipelines y almacenamiento en caché.

Para Google Trends, recomiendo utilizar Solicitudes para buscar páginas y BeautifulSoup para analizar el HTML. Scrapy es excesivo para un raspador de un solo sitio.

Proxies

Para enmascarar el tráfico de scraper, enrute las solicitudes a través de servidores proxy residenciales de proveedores como BrightData, SmartProxy u Oxylabs. Esto hace que cada solicitud aparezca desde una dirección IP residencial diferente.

Configure proxies en Solicitudes usando bibliotecas de Python como PySocks:

import requests
import socks 

proxy = "PROXY_HOST:PORT"

socks.set_default_proxy(socks.SOCKS5, proxy)
socket.socket = socks.socksocket

requests.get(‘http://www.example.com‘)

Los proxies rotativos son clave para un scraping estable y duradero.

Entornos virtuales

Uso entornos virtuales para aislar las dependencias y configuraciones del scraper de su instalación principal de Python. Las opciones comunes son virtualenv, pipenv y Anaconda.

Por ejemplo:

pip install virtualenv
virtualenv myscraperenv
source myscraperenv/bin/activate

¡Ahora veamos cómo construir el raspador!

La aplicación web Trends realiza solicitudes a las API internas para recuperar datos de búsqueda. Necesitamos realizar ingeniería inversa donde se encuentran estos datos dentro del HTML y extraerlos.

Veamos paso a paso:

Obteniendo HTML de página

Primero usaremos Solicitudes para descargar la página HTML:

import requests

url = ‘https://trends.google.com/trends/explore?date=all&q=python‘ 

response = requests.get(url)
html = response.text

También podríamos integrar aquí la automatización del navegador Selenium para representar JavaScript.

Análisis con BeautifulSoup

A continuación analizaremos el HTML y navegaremos por el árbol DOM usando BeautifulSoup:

from bs4 import BeautifulSoup

soup = BeautifulSoup(html, ‘html.parser‘)

soup ahora contiene el documento estructurado.

Extracción de datos JSON

Los datos del gráfico de Tendencias se encuentran dentro de una variable de JavaScript llamada window.DATA. Necesitamos extraer la cadena JSON sin formato:

data = soup.find(‘script‘, text=lambda t: t.startswith(‘window.DATA‘))
data_string = data.text.split(‘window.DATA = ‘)[1].rstrip(‘;‘) 

Luego podemos convertirlo en un diccionario Python anidado:

import json

data_json = json.loads(data_string)

Analizando la serie temporal

La serie temporal del volumen de búsqueda principal para nuestra palabra clave se encuentra en data_json[‘timelineData‘]. Extraigamoslo:

import pandas as pd 

df = pd.DataFrame(data_json[‘timelineData‘])
print(df.head())

Esto imprime las primeras filas que contienen la fecha, la frecuencia de búsqueda y la fecha formateada.

¡Y voilá! Ahora tenemos acceso programático a los datos de Google Trends para cualquier palabra clave sin límites.

Extraer datos manualmente para una palabra clave es útil, pero el verdadero poder proviene de extraer miles de términos.

Para consultar Tendencias para múltiples palabras clave, simplemente envolvemos nuestro raspador en un bucle:

keywords = [‘python‘, ‘java‘, ‘c++‘] 

dataframes = []

for kw in keywords:

  url = f‘https://trends.google.com/trends/explore?date=all&q={kw}‘

  # Fetch HTML, extract JSON 
  # ...

  df = pd.DataFrame(data_json[‘timelineData‘])

  # Append each keyword‘s dataframe
  dataframes.append(df)

# Merge all data  
trends_data = pd.concat(dataframes, keys=keywords)

También podemos agregar retrasos entre solicitudes y manejo de errores para eliminar de manera responsable:

import time
from random import randint

for kw in keywords:

  try:
    # Scraper code

    time.sleep(randint(3,5))

  except Exception as e:
    print(f‘Error: {e}‘)

    # Pause on failure
    time.sleep(60) 

Esto consulta a Google a un ritmo razonable para evitar sobrecargar sus servidores. Los representantes distribuirán aún más las solicitudes.

Evitar captchas y bloques

Los raspadores que intentan extraer grandes cantidades de datos pueden encontrar captcha y medidas de detección de bots. A continuación se presentan técnicas comprobadas para evitarlos:

Proxies residenciales

Solicitudes de enrutamiento a través de IP residenciales hace que su tráfico parezca más humano ya que se origina en redes domésticas. Los principales proveedores de proxy incluyen:

  • Datos brillantes – 40 millones de IP con 97 % de tiempo de actividad y captchas de resolución automática. Los precios comienzan alrededor de $500/mes.
  • Proxy inteligente – 10 millones de IP con proxies especiales de Instagram y zapatillas. Alrededor de $700/mes mínimo.
  • Oxylabs – 15 millones de IP residenciales. Admite alta concurrencia y volúmenes. Aproximadamente $500/mes.

Configurar proxies rotativos en Python con bibliotecas como PySocks, Solicitudes y Scrapy.

Automatización del navegador

Selenio puede hacer que los navegadores Chrome o Firefox reales muestren JavaScript y eviten las protecciones en busca de herramientas sin cabeza.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.headless = True 

driver = webdriver.Chrome(options=options)

driver.get(url)
html = driver.page_source

driver.quit() 

Esto parece una sesión de navegador real para la mayoría de las defensas.

Servicios de resolución de captcha

Herramientas como AntiCaptcha y 2Capcha puede resolver captchas automáticamente enviándolos a solucionadores humanos. Los precios comienzan alrededor de $2 por 1000 captchas dependiendo de las necesidades de velocidad y precisión.

Ejemplo de integración de Python:

import twocaptcha

api_key = ‘YOUR_API_KEY‘

solver = twocaptcha.TwoCaptcha(api_key)

try:
  result = solver.recaptcha(sitekey=‘SITE_KEY‘, url=‘URL‘)

except twocaptcha.APIError as e:
  print(e)

El uso de una combinación de servidores proxy, navegadores y solucionadores de captcha ayudará a evitar casi cualquier bloqueo.

Con la extracción de datos automatizada, veamos opciones de almacenamiento, análisis y visualización:

Formatos de datos estructurados

Para un análisis rápido en Python, recomiendo convertir los datos de Tendencias extraídos en un marco de datos de pandas. Esto proporciona una estructura tabular con marcas de tiempo, volúmenes de búsqueda y otros metadatos asociados.

También podemos exportar el marco de datos a formatos como CSV or JSON para portabilidad:

trends_df.to_csv(‘trends_data.csv‘, index=False)

Cargando en bases de datos

Para consultas SQL más avanzadas y unión con otras fuentes de datos, cargue los datos extraídos en una base de datos relacional como PostgreSQL or MySQL:

CREATE TABLE trends_data (
  date DATE,
  keyword VARCHAR(255), 
  search_volume INT  
);

# Insert dataframe rows 
trends_df.to_sql(‘trends_data‘, engine, if_exists=‘append‘, index=False)

Bases de datos NoSQL como MongoDB También funciona bien para almacenamiento JSON flexible.

Herramientas de inteligencia de negocios

Para crear visualizaciones y paneles interactivos, integre los datos de Tendencias en herramientas como Cuadro, Looker or Power BI. Estos se conectan directamente a bases de datos y formatos de hojas de cálculo.

Ejemplo de panel de Tableau con gráficos

Tableau facilita la detección de tendencias y patrones.

Análisis y modelado estadístico

Con los datos de Tendencias cargados en Python y Pandas, podemos realizar análisis de series de tiempo utilizando bibliotecas como EstadísticasModelos y Profeta:

from prophet import Prophet

model = Prophet()
model.fit(trends_df)

future = model.make_future_dataframe(periods=365)
forecast = model.predict(future)

Prophet pronostica tendencias futuras basándose en patrones históricos.

Incluso podemos construir modelos de ML como ARIMA y LSTM encima del conjunto de datos para generar información. ¡Las posibilidades son infinitas!

Esta guía le mostró cómo:

  • Configure un raspador de Python con Requests, Selenium, Beautiful Soup
  • Extraiga datos de series temporales del volumen de búsqueda analizando JSON
  • Extraiga miles de palabras clave utilizando bucles y proxies
  • Almacenar datos de tendencias en Pandas, CSV, bases de datos
  • Analice y visualice datos para obtener información valiosa

Scraping le brinda acceso bajo demanda a la poderosa herramienta de Tendencias de Google, lo que desbloquea inteligencia competitiva única.

Las mismas técnicas se pueden aplicar a cualquier sitio. Con los datos de Tendencias en su pila de análisis, obtendrá una visión de las oportunidades y riesgos futuros de los que carecen sus rivales.fetcherviewergefessdger ilnkd tffavfwa

Siempre estaré encantado de responder cualquier otra pregunta sobre el scraping avanzado y los proxies. Utilice sus nuevos superpoderes de web scraping de forma ética y deje que los datos guíen su negocio.

Únase a la conversación

Su dirección de correo electrónico no será publicada. Las areas obligatorias están marcadas como requeridas *