Script Python per Ricerca Google Trends con GUI

Lo script implementa un’interfaccia grafica in Python con tkinter per eseguire ricerche di trend su Google Trends, utilizzando pytrends. Offre funzionalità per selezionare una nazione e una parola chiave, visualizzare i risultati grafici e salvare i dati.

import tkinter as tk
from tkinter import ttk
import tkinter.messagebox
from pytrends.request import TrendReq
import random
import string
import pandas as pd
import matplotlib.pyplot as plt

nazioni_dict = {
    "AL": "Albania", 
    "AD": "Andorra", 
    "AM": "Armenia", 
    "AT": "Austria", 
    "AZ": "Azerbaijan",
    "BY": "Belarus", 
    "BE": "Belgium", 
    "BA": "Bosnia and Herzegovina", 
    "BG": "Bulgaria",
    "HR": "Croatia", 
    "CY": "Cyprus", 
    "CZ": "Czech Republic", 
    "DK": "Denmark", 
    "EE": "Estonia",
    "FI": "Finland", 
    "FR": "France", 
    "GE": "Georgia", 
    "DE": "Germany", 
    "GR": "Greece",
    "HU": "Hungary", 
    "IS": "Iceland", 
    "IE": "Ireland", 
    "IT": "Italy", 
    "KZ": "Kazakhstan",
    "XK": "Kosovo", 
    "LV": "Latvia", 
    "LI": "Liechtenstein", 
    "LT": "Lithuania", 
    "LU": "Luxembourg",
    "MT": "Malta", 
    "MD": "Moldova", 
    "MC": "Monaco", 
    "ME": "Montenegro", 
    "NL": "Netherlands",
    "MK": "North Macedonia", 
    "NO": "Norway", 
    "PL": "Poland", 
    "PT": "Portugal", 
    "RO": "Romania",
    "RU": "Russia", 
    "SM": "San Marino", 
    "RS": "Serbia", 
    "SK": "Slovakia", 
    "SI": "Slovenia",
    "ES": "Spain", 
    "SE": "Sweden", 
    "CH": "Switzerland", 
    "TR": "Turkey", 
    "UA": "Ukraine",
    "GB": "United Kingdom", 
    "VA": "Vatican City"
}

def mostra_grafico(data, geo):
    plt.figure(figsize=(10,5))
    plt.plot(data.index, data.iloc[:,0], marker='o', linestyle='-')
    plt.title(f'Trend di Ricerca per "{data.columns[0]}" in {nazioni_dict[geo]}')
    plt.xlabel('Data')
    plt.ylabel('Interesse relativo')
    plt.grid(True, which='both', linestyle='--', linewidth=0.5)
    plt.tight_layout()
    plt.show()

def ricerca_trend():
    keyword = entry_keyword.get()
    geo = None

    if combo_nazioni.get():
        nome_nazione_selezionato = combo_nazioni.get()
        geo = [code for code, name in nazioni_dict.items() if name == nome_nazione_selezionato][0]

    if keyword and geo:
        pytrend = TrendReq()
        pytrend.build_payload(kw_list=[keyword], geo=geo)
        data = pytrend.interest_over_time()

        if not data.empty:
            mostra_grafico(data, geo)

        codice = ''.join(random.choices(string.digits, k=4))
        filename = f"{codice}_{geo}.txt"
        data.to_csv(filename)
        tk.messagebox.showinfo("Info", f"Risultato salvato in {filename}")
    else:
        tk.messagebox.showwarning("Attenzione", "Inserire una parola chiave e selezionare una nazione o un capoluogo.")

root = tk.Tk()
root.title("Ricerca Google Trends")

tk.Label(root, text="Parola chiave:").pack(pady=10)
entry_keyword = tk.Entry(root)
entry_keyword.pack(pady=10)

tk.Label(root, text="Seleziona una nazione:").pack(pady=10)
combo_nazioni = ttk.Combobox(root, values=list(nazioni_dict.values()))
combo_nazioni.pack(pady=10)

tk.Button(root, text="Ricerca Trend", command=ricerca_trend).pack(pady=20)

root.mainloop()

Struttura e Funzionalità

Interfaccia Grafica Tkinter: Fornisce un’interfaccia utente intuitiva per inserire parametri di ricerca.

Selezione Nazione e Parola Chiave: Permette all’utente di selezionare una nazione da un elenco e inserire una parola chiave per la ricerca.

Utilizzo di Pytrends: Interfaccia con Google Trends per recuperare i dati di tendenza.

Visualizzazione Grafica: Mostra i risultati in un grafico utilizzando matplotlib.

Salvataggio Risultati: Salva i dati di tendenza in un file CSV con un nome generato casualmente.

Valutazione Tecnica

Funzionalità: L’implementazione è funzionale e completa, offrendo un’esperienza utente fluida.

Usabilità: L’interfaccia è semplice ed efficace, rendendo lo strumento accessibile anche agli utenti meno esperti.

Estensibilità: Lo script può essere facilmente esteso o modificato per includere altre funzionalità.

Gestione Errori: Include controlli di base per l’input, ma potrebbe beneficiare di una gestione degli errori più robusta, specialmente per la connessione con Google Trends.

Conclusioni

Lo script è un valido esempio di come integrare diverse librerie Python per creare uno strumento di analisi dei trend semplice ma efficace. La sua facilità d’uso e l’approccio visuale lo rendono uno strumento utile per analisi di base dei trend.