Come raschiare i dati di Google Trends usando Python

Commenti: 0

L'uso di Python e Playwright per raschiare i dati da Google Trends consente di esaminare in dettaglio la popolarità delle parole chiave e di monitorare le variazioni di tendenza nel tempo. Questo approccio fornisce informazioni cruciali per l'analisi del marketing.

Prequisiti

Prima di immergervi nel codice, assicuratevi di avere installato i seguenti strumenti:

  • Python 3.7+;
  • Libreria Playwright.

È possibile installare Playwright utilizzando pip:

pip install playwright

Per utilizzare Playwright con codice asincrono, è necessaria anche la libreria asyncio, che è inclusa in Python 3.7+ per impostazione predefinita.

Configurare Playwright per lavorare con Google Trends

Utilizzeremo Playwright, un potente strumento di automazione del browser, per navigare nel sito web di Google Trends e scaricare file CSV contenenti dati sulle tendenze. Questo tutorial vi guiderà attraverso l'intero processo.

Installazione di Playwright

Innanzitutto, assicurarsi che Playwright sia installato:

playwright install

Se non si desidera installare tutti i browser, è sufficiente utilizzare questo comando per installare solo il browser chromium.

playwright install chromium

Configurazione del proxy

Per lo scraping di piattaforme come Google, che contrastano attivamente l'attività dei bot, l'uso dei proxy è essenziale. I proxy consentono la rotazione degli IP, contribuendo a ridurre il rischio di essere bloccati. Nel nostro script, utilizziamo dei proxy privati per instradare le nostre richieste.

proxy = {
    "server": "IP:PORT",
    "username": "your_username",
    "password": "your_password"
}

Sostituire le variabili IP, PORT, username e password con i dati reali del server proxy.

Passo dopo passo per lavorare con Playwright

In questo esempio, per prima cosa navighiamo su google.com per aggirare eventuali blocchi prima di andare alla pagina di Google Trends. Questo per imitare il normale comportamento dell'utente ed evitare il rilevamento.

Fase 1: Preparazione per lavorare con Google Trends

Questa fase prevede azioni preliminari per evitare di essere segnalati e bloccati da Google:

  • Avvio del browser: si tratta di avviare un'istanza del browser Chromium configurata con impostazioni proxy. L'uso dei proxy aiuta a ridurre le possibilità di rilevamento, mascherando l'attività di scraping come un normale utilizzo del browser.
  • Navigazione verso Google: accedendo prima a google.com, si acclimata il sistema di tracciamento di Google alla presenza di quello che percepisce come un nuovo utente. Questa semplice fase di navigazione riduce la probabilità che le attività successive vengano classificate come bot, evitando così il blocco immediato.
import asyncio
from playwright.async_api import Playwright, async_playwright

async def run(playwright: Playwright) -> None:
    # Avvio del browser con impostazioni proxy
    browser = await playwright.chromium.launch(headless=False, proxy={
        "server": "IP:PORT",
        "username": "your_username",
        "password": "your_password"
    })
    
    # Creare un nuovo contesto del browser
    context = await browser.new_context()
    
    # Apertura di una nuova pagina
    page = await context.new_page()
    
    # Visitare Google per simulare la normale navigazione
    await page.goto("https://google.com")

Fase 2: navigare e scaricare i dati da Google Trends

Successivamente, si naviga direttamente alla pagina di Google Trends dove si trovano i dati richiesti. Google Trends offre la possibilità di scaricare i dati direttamente in formato CSV, facilitando così il processo di estrazione. Automatizzare l'azione di fare clic sul pulsante "Download" per avviare il download dei dati. Ciò consente di estrarre i dati di tendenza senza intervento manuale. Una volta che il pulsante "Download" diventa visibile, l'automazione deve fare clic su di esso, avviando il download del file CSV che contiene i dati di trend necessari.

 # Navigazione in Google Trends
    await page.goto("https://trends.google.com/trends/explore?q=%2Fg%2F11bc6c__s2&date=now%201-d&geo=US&hl=en-US")
    
    # Attendere il pulsante di download e fare clic su di esso
    async with page.expect_download() as download_info:
        await page.get_by_role("button", name="file_download").first.click()
    
    # Gestione del download
    download = await download_info.value
    print(download.suggested_filename)

Fase 3: Salvare i dati e terminare la sessione

Il file CSV scaricato viene automaticamente salvato in una directory specificata sul dispositivo locale.

 # Salvare il file scaricato
    await download.save_as("/path/to/save/" + download.suggested_filename)

Esempio di codice completo

Ecco il codice completo per scaricare i dati di Google Trends come file CSV utilizzando Playwright:

import asyncio
import os
import re
from playwright.async_api import Playwright, async_playwright


async def run(playwright: Playwright) -> None:
   # Avviare il browser con le impostazioni del proxy
   browser = await playwright.chromium.launch(headless=False, proxy={
       "server": "IP:PORT",
       "username": "your_username",
       "password": "your_password"
   })

   # Creare un nuovo contesto del browser
   context = await browser.new_context()

   # Aprire una nuova pagina
   page = await context.new_page()

   # Visitare Google per evitare il rilevamento
   await page.goto("https://google.com")

   # Andare su Google Trends
   await page.goto("https://trends.google.com/trends/explore?q=%2Fg%2F11bc6c__s2&date=now%201-d&geo=US&hl=en-US")

   # Fare clic sul pulsante di download
   async with page.expect_download() as download_info:
       await page.get_by_role("button", name=re.compile(r"file_download")).first.click()

   # Salvare il file scaricato
   download = await download_info.value
   destination_path = os.path.join("path/to/save", download.suggested_filename)
   await download.save_as(destination_path)

   # Chiudere il contesto e il browser
   await context.close()
   await browser.close()


async def main() -> None:
   async with async_playwright() as playwright:
       await run(playwright)


asyncio.run(main())

Seguendo questa guida, è possibile scaricare in modo efficiente i dati di tendenza, gestire la rotazione dei proxy e aggirare i meccanismi di protezione dei bot. Per evitare efficacemente i blocchi, è fondamentale utilizzare server proxy affidabili. I proxy residenziali, che offrono indirizzi IP dinamici e non necessitano di configurazione a rotazione, sono altamente raccomandati. In alternativa, sono efficaci anche i proxy statici dell'ISP; acquistate il numero di IP necessario e impostate una rotazione regolare degli IP nel vostro script. Entrambe le scelte assicurano un rischio minimo di blocco e di captcha, facilitando uno scraping dei dati più rapido e fluido.

Commenti:

0 Commenti