Salta al contenuto

Come sbloccare i superpoteri raschiando Google Trends

Lo strumento Trends di Google, disponibile gratuitamente, fornisce una miniera d'oro di dati di ricerca che possono dare un vantaggio alla tua attività. Raccogliendo questi dati su larga scala, ottieni informazioni preziose per superare in astuzia la concorrenza. Questa guida completa ti insegnerà come sfruttare i superpoteri dello scraping di Google Trends utilizzando Python.

Google Trends ha livellato il campo di gioco democratizzando l’accesso ai dati aggregati sul volume di ricerca. Le aziende più esperte utilizzano sempre più Trends per ottenere informazioni uniche che informano decisioni ad alto impatto:

  • 89% dei marketer digitali fare affidamento sui trend per la ricerca di parole chiave secondo recenti sondaggi. I dati sul volume di ricerca aiutano a ottimizzare i contenuti e la strategia SEO.

  • Le tendenze hanno aiutato Spotify identifica i mercati non sfruttati espandersi includendo Romania e Croazia sulla base di modelli di ricerca musicale.

  • Società finanziarie come Hedgeye raccogliere dati sulle tendenze dei marchi al dettaglio per prevedere la performance economica utilizzando l'interesse di ricerca come segnale.

  • VC e startup utilizzare i trend per quantificare la domanda del mercato per i prodotti prima del lancio e identificare nuove opportunità di business.

  • Anche le tendenze picchi di casi di COVID previsti identificando un crescente interesse per le ricerche sui sintomi in regioni specifiche.

Le applicazioni sono infinite, ma la ricerca manuale dei dati è lenta e limitata. È qui che entra in gioco il web scraping per automatizzare il processo e sbloccare il vero potere di Trends.

Configurazione di un web scraper Python

Prima dello scraping, esaminiamo i prerequisiti e gli strumenti principali:

Imparare Python

La conoscenza di Python è necessaria per implementare uno scraper. Consiglio di completare prima i corsi online sulle basi di Python e sui concetti orientati agli oggetti. Alcune buone risorse per iniziare sono:

Le estese librerie di Python e la semplice sintassi lo rendono una scelta perfetta per il web scraping.

Librerie di raschiatori

Queste librerie Python forniscono le funzionalità di scraping:

  • Richieste – Invia richieste HTTP per scaricare pagine web. Più leggero del selenio.

  • bellazuppa – Analizza documenti HTML e XML per estrarre dati utilizzando selettori CSS e regex.

  • Selenio – Avvia e controlla browser come Chrome e Firefox per l'automazione. Può aggirare i problemi di rendering di JavaScript.

  • Scrapy – Framework completo per progetti di scraping di grandi dimensioni con strumenti come spider, pipeline, caching.

Per Google Trends, consiglio di utilizzare Requests per recuperare le pagine e BeautifulSoup per analizzare l'HTML. Scrapy è eccessivo per un raschiatore a sito singolo.

Proxy

Per mascherare il traffico dello scraper, instradare le richieste server proxy residenziali da fornitori come BrightData, SmartProxy o Oxylabs. Ciò fa sì che ogni richiesta venga visualizzata da un indirizzo IP residenziale diverso.

Configura i proxy in Richieste utilizzando le librerie Python come 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‘)

I proxy rotanti sono fondamentali per uno scraping stabile e di lunga durata.

Ambienti virtuali

Usa il ambienti virtuali per isolare le dipendenze e le impostazioni dello scraper dall'installazione principale di Python. Le scelte comuni lo sono virtualenv, pipenv e Anaconda.

Per esempio:

pip install virtualenv
virtualenv myscraperenv
source myscraperenv/bin/activate

Ora diamo un'occhiata alla costruzione vera e propria del raschietto!

L'app Web Trends invia richieste alle API interne per recuperare i dati di ricerca. Dobbiamo decodificare la posizione in cui risiedono questi dati all'interno dell'HTML ed estrarli.

Procediamo passo dopo passo:

Recupero dell'HTML della pagina

Per prima cosa utilizzeremo Requests per scaricare la pagina HTML:

import requests

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

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

Potremmo anche integrare qui l'automazione del browser Selenium per eseguire il rendering di JavaScript.

Analisi con BeautifulSoup

Successivamente analizzeremo l'HTML e navigheremo attraverso l'albero del DOM utilizzando BeautifulSoup:

from bs4 import BeautifulSoup

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

soup ora contiene il documento strutturato.

Estrazione dei dati JSON

I dati del grafico Trends risiedono all'interno di una variabile JavaScript chiamata window.DATA. Dobbiamo estrarre la stringa JSON grezza:

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

Quindi possiamo convertirlo in un dizionario Python annidato:

import json

data_json = json.loads(data_string)

Analisi delle serie temporali

La serie temporale del volume di ricerca principale per la nostra parola chiave risiede sotto data_json[‘timelineData‘]. Estraiamolo:

import pandas as pd 

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

Verranno stampate le prime righe contenenti data, frequenza di ricerca e data formattata.

E voilà! Ora abbiamo accesso programmatico ai dati di Google Trends per qualsiasi parola chiave senza limiti.

Estrarre manualmente i dati per una parola chiave è utile, ma il vero potere deriva dalla raccolta di migliaia di termini.

Per eseguire query su Trends per più parole chiave, avvolgiamo semplicemente il nostro raschietto in un ciclo:

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)

Possiamo anche aggiungere ritardi tra le richieste e la gestione degli errori per raschiare in modo responsabile:

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) 

Questo interroga Google a un ritmo ragionevole per evitare di sovraccaricare i propri server. I proxy distribuiranno ulteriormente le richieste.

Bypassare Captcha e Blocchi

Gli scraper che tentano di estrarre grandi quantità di dati possono incontrare misure di rilevamento di captcha e bot. Ecco le tecniche collaudate per aggirarli:

Proxy residenziali

Richieste di instradamento attraverso IP residenziali fa sembrare il tuo traffico più umano poiché proviene dalle reti domestiche. I principali fornitori di proxy includono:

  • BrightData – 40 milioni di IP con uptime del 97% e captcha a risoluzione automatica. I prezzi partono da circa $ 500 al mese.
  • Proxy intelligente – 10 milioni di IP con speciali proxy Instagram e sneaker. Minimo circa $ 700 al mese.
  • Oxylab – 15 milioni di IP residenziali. Supporta concorrenza e volumi elevati. Circa $ 500 al mese.

Configura proxy rotanti in Python con librerie come PySocks, Richieste e Scrapy.

Automazione del browser

Selenio può guidare i veri browser Chrome o Firefox per eseguire il rendering di JavaScript e aggirare le protezioni alla ricerca di strumenti headless.

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() 

Alla maggior parte delle difese questa sembra una vera sessione del browser.

Servizi di risoluzione dei captcha

Strumenti come AntiCaptcha ed 2Captcha può risolvere automaticamente i captcha indirizzandoli a risolutori umani. I prezzi partono da circa $ 2 per 1000 captcha a seconda delle esigenze di velocità e precisione.

Esempio di integrazione 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)

L'uso di una combinazione di proxy, browser e risolutori di captcha aiuterà a evitare quasi tutti i blocchi.

Con l'estrazione automatizzata dei dati, diamo un'occhiata alle opzioni per l'archiviazione, l'analisi e la visualizzazione:

Formati di dati strutturati

Per un'analisi rapida in Python, consiglio di convertire i dati Trends raschiati in un file Dataframe Panda. Ciò fornisce una struttura tabellare con timestamp, volumi di ricerca e altri metadati associati.

Possiamo anche esportare il dataframe in formati come CSV or JSON per la portabilità:

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

Caricamento nei database

Per query SQL più avanzate e unione con altre origini dati, caricare i dati raschiati in un database relazionale come 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)

Database NoSQL come MongoDB funzionano bene anche per l'archiviazione JSON flessibile.

Strumenti di Business Intelligence

Per creare dashboard e visualizzazioni interattive, integra i dati di Trends in strumenti come Quadro, Looker or Power BI. Questi si collegano direttamente ai database e ai formati di fogli di calcolo.

Esempio di dashboard di Tableau con grafici

Tableau semplifica l'individuazione di tendenze e modelli.

Analisi statistica e modellazione

Con i dati di Trends caricati in Python e Panda, possiamo condurre analisi di serie temporali utilizzando librerie come Statistiche Modelli ed Profeta:

from prophet import Prophet

model = Prophet()
model.fit(trends_df)

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

Il Profeta prevede le tendenze future sulla base di modelli storici.

Possiamo persino creare modelli ML come ARIMA ed LSTM sul set di dati per generare approfondimenti. Le possibilità sono infinite!

Questa guida ti ha mostrato come:

  • Configura un raschietto Python con Richieste, Selenio, Bella Zuppa
  • Estrai i dati delle serie temporali del volume di ricerca analizzando JSON
  • Raccogli migliaia di parole chiave utilizzando loop e proxy
  • Memorizza i dati delle tendenze in Panda, CSV, database
  • Analizza e visualizza i dati per ottenere approfondimenti

Lo scraping ti offre l'accesso su richiesta al potente strumento Trends di Google, sbloccando un'intelligence competitiva unica.

Le stesse tecniche possono essere applicate a qualsiasi sito. Con i dati di Trends nel tuo stack di analisi, ottieni una visione delle opportunità e dei rischi futuri che mancano ai tuoi rivali.fetcherviewergefessdger ilnkd tffavfwa

Sono sempre felice di rispondere a qualsiasi altra domanda sullo scraping avanzato e sui proxy. Usa i tuoi nuovi superpoteri di web scraping in modo etico e lascia che i dati guidino la tua attività!

Partecipa alla conversazione

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *