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.