Business process automation expert
Sfrutta la potenza dei dati web senza bisogno di competenze di programmazione avanzate! Questo tutorial dimostra come estrarre informazioni dai siti web in modo semplice e diretto su Google Fogli utilizzando Google Apps Script, aprendo un mondo di possibilità per le aziende. Automatizza ricerche di mercato, analisi della concorrenza e raccolta dati, risparmiando innumerevoli ore di lavoro manuale e ottenendo informazioni preziose, il tutto senza richiedere una conoscenza approfondita dell’HTML.
L’estrazione dati dal web è simile a copiare e incollare automaticamente informazioni dai siti web. Immagina di avere un assistente digitale che visita i siti web e raccoglie automaticamente informazioni specifiche. Invece di selezionare e copiare manualmente testo o immagini, un programma esegue questo compito per te, raccogliendo dati come prezzi, dettagli di prodotti o informazioni di contatto.
Questi dati estratti possono poi essere utilizzati per vari scopi, tra cui confrontare i prezzi tra diversi rivenditori online, raccogliere contatti commerciali (lead), creare notifiche per modifiche ai contenuti e altro ancora. In sostanza, l’estrazione dati dal web automatizza un noioso lavoro manuale, risparmiando tempo e fatica significativi grazie all’estrazione e all’organizzazione efficiente di grandi quantità di dati web.
Nell’odierno ambiente aziendale competitivo, la produttività e l’allocazione ottimizzata delle risorse sono cruciali per il successo. L’estrazione dati dal web è uno strumento prezioso per raggiungere questi obiettivi, migliorando significativamente la produttività attraverso l’automazione della raccolta dati, che richiede molto tempo, e dell’analisi.
Automatizzando l’estrazione di dati dai siti web, le aziende risparmiano tempo e fatica considerevoli rispetto ai metodi manuali. Questa maggiore efficienza consente ai team di concentrarsi su iniziative strategiche anziché su compiti ripetitivi.
Inoltre, i dati raccolti tramite l’estrazione dati dal web non sono semplicemente un fine a sé stante; servono come input cruciale per ulteriori processi di automazione. Ad esempio, i dati estratti possono alimentare strategie di prezzo dinamiche basate sulla concorrenza nell’e-commerce o identificare automaticamente opportunità di investimento preziose aggregando annunci immobiliari da più portali.
Questa integrazione fluida con altri flussi di lavoro di automazione amplifica l’impatto dell’estrazione dati dal web, rendendola una risorsa indispensabile per qualsiasi azienda lungimirante.
Google Apps Script è un linguaggio di scripting basato su cloud e costruito su JavaScript che ti permette di automatizzare attività e creare potenti integrazioni all’interno di Google Workspace (precedentemente G Suite). Il suo vantaggio unico risiede nella capacità di connettere fluidamente vari servizi Google, inclusi Gmail, Documenti, Drive, Calendar e, soprattutto, Fogli, rendendolo eccezionalmente adatto per costruire automazioni complete. Questa interconnessione ti consente di creare flussi di lavoro che si estendono su più applicazioni, semplificando i processi e aumentando la produttività.
Specificamente per l’estrazione dati dal web, il servizio UrlFetchApp
di Apps Script ti permette di recuperare contenuti direttamente dalle pagine web, abilitando l’estrazione automatizzata dei dati e l’integrazione con il resto delle tue applicazioni Google Workspace. Inviando richieste HTTP ai siti web, puoi recuperare dati HTML, XML o JSON. Questi dati estratti possono poi essere analizzati (parsed) e strutturati utilizzando JavaScript all’interno dello script.
La vera potenza di questo approccio si realizza quando combinato con Google Fogli: i dati estratti possono essere scritti direttamente nei fogli di calcolo, fornendo un ambiente comodo e familiare per l’archiviazione, l’organizzazione, l’analisi, la visualizzazione dei dati e l’ulteriore automazione.
Creeremo un sistema che esegue le seguenti operazioni:
Per prima cosa, hai bisogno di un Foglio Google. Il tuo Foglio Google dovrebbe avere almeno due colonne:
Qui puoi trovare un modello per il foglio di calcolo.
Il prossimo passo cruciale per il tuo strumento di estrazione dati è dirgli esattamente quale informazione recuperare dalla pagina web. È qui che entra in gioco il selettore CSS.
Pensa a un selettore CSS come a un indirizzo per un elemento specifico su una pagina web – come il prezzo, il titolo di un prodotto o il conteggio delle recensioni. Ecco come puoi trovare facilmente questo indirizzo utilizzando il browser Chrome:
Ecco fatto! Il selettore CSS per quell’elemento specifico è ora copiato nei tuoi appunti. Questo è il valore che dovrai quindi incollare nella Colonna B del tuo Foglio Google per l’URL di quel prodotto, indicando al tuo script di estrazione esattamente cosa cercare in quella pagina.
Ora, diamo un’occhiata al codice che fa la magia. Apri l’editor di script nel tuo Foglio Google andando su “Strumenti” > “Editor di script” (o “Tools” > “Script editor”). Copia e incolla il codice fornito di seguito nell’editor di script.
/**
* Fetches product prices from URLs in a Google Sheet and updates the sheet with the prices.
*/
// Configuration (Update these with your actual values)
const SHEET_ID = `YOUR_SHEET_ID`; // Replace with your actual Sheet ID
const SHEET_NAME = `YOUR_SHEET_NAME`; // Replace with your actual Sheet Name
const URLS_COLUMN_ID = 1; // Column containing URLs (A = 1)
const CSS_SELECTOR_COLUMN = 2; // Column containing CSS selectors (B = 2)
const PRICE_COLUMN = 3; // Column to write prices (C = 3)
const REQUEST_DELAY = 1000; // Delay between requests in milliseconds (1 second)
/**
* Main function to run the script.
*/
function main() {
const urlData = getUrlsFromSheet();
if (urlData.length === 0) {
Logger.log("No URLs to process.");
return;
}
const prices = [];
for (let i = 0; i < urlData.length; i++) {
const url = urlData[i].url;
const selector = urlData[i].selector;
const html = fetchHtml(url);
const price = extractPrice(html, selector);
prices.push(price);
Utilities.sleep(REQUEST_DELAY); // Delay between requests
Logger.log(`Processed URL ${i+1}/${urlData.length}: ${url}, Price: ${price}`);
}
updateSheet(prices);
}
/**
* Opens the spreadsheet and gets the URLs and selectors.
* @return {Array<{url: string, selector: string}>} An array of objects containing URLs and selectors.
*/
function getUrlsFromSheet() {
const ss = SpreadsheetApp.openById(SHEET_ID);
const sheet = ss.getSheetByName(SHEET_NAME);
const lastRow = sheet.getLastRow();
if (lastRow < 2) return []; // Handle empty sheet
const urls = sheet.getRange(2, URLS_COLUMN_ID, lastRow - 1)
.getValues()
.flat(); // Get values as a 1D array.
const selectors = sheet.getRange(2, CSS_SELECTOR_COLUMN, lastRow - 1)
.getValues()
.flat(); // Get values as a 1D array.
const urlData = [];
for (let i = 0; i < urls.length; i++) {
urlData.push({
url: urls[i],
selector: selectors[i]
});
}
return urlData;
}
/**
* Fetches the HTML content of a URL.
* @param {string} url The URL to fetch.
* @return {string|null} The HTML content, or null if there's an error.
*/
function fetchHtml(url) {
try {
const options = {
method: 'get',
muteHttpExceptions: true,
headers: { // Added some common headers
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
'Accept-Language': 'en-US,en;q=0.9',
'Cache-Control': 'no-cache'
}
};
const response = UrlFetchApp.fetch(url, options);
if (response.getResponseCode() === 200) {
return response.getContentText();
} else {
Logger.log(`Error fetching ${url}: ${response.getResponseCode()} - ${response.getContentText()}`);
return null;
}
} catch (error) {
Logger.log(`Error fetching ${url}: ${error}`);
return null;
}
}
/**
* Extracts the price from the HTML using Cheerio.
* @param {string} html The HTML content.
* @param {string} selector The CSS selector to use.
* @return {number|null} The extracted price as a number, or null if not found.
*/
function extractPrice(html, selector) { // Added selector parameter
if (!html || !selector) return null; // Added check for selector
try {
const $ = Cheerio.load(html);
let priceText = $(selector).text(); // Use provided selector
if (!priceText) {
Logger.log("Price element not found using selector: " + selector);
return null;
}
priceText = priceText.replace(/,/g,'.');
let price = parseFloat(priceText.replace(/[^0-9.]/g, ''));
if (isNaN(price)) {
Logger.log("Could not parse price to a number: " + priceText);
return null;
}
return price;
} catch (error) {
Logger.log("Error extracting price: " + error);
return null;
}
}
/**
* Updates the Google Sheet with the extracted prices.
* @param {Array<number|null>} prices An array of prices to write to the sheet.
*/
function updateSheet(prices) {
if (prices.length === 0) return;
const ss = SpreadsheetApp.openById(SHEET_ID);
const sheet = ss.getSheetByName(SHEET_NAME);
const lastRow = sheet.getLastRow();
const urlsCount = sheet.getRange(2, URLS_COLUMN_ID, lastRow - 1).getValues().flat().length;
if (prices.length !== urlsCount) {
Logger.log(`Number of prices (${prices.length}) does not match the number of URLs (${urlsCount}).`);
return;
}
sheet.getRange(2, PRICE_COLUMN, prices.length, 1).setValues(prices.map(price => [price]));
}
Prima di iniziare a utilizzare questo codice, non dimenticare di includere la libreria Cheerio. Questa libreria di terze parti ci aiuta a elaborare l’HTML più facilmente e deve essere aggiunta manualmente al nostro progetto. Ecco come fare:
1ReeQ6WO8kKNxoaA_O0XEQ589cIrRvEBA9qcWpNqdOP17i47u6N9M5Xh0
La libreria dovrebbe ora apparire nella finestra di dialogo “Librerie”.
Il nostro script Google Apps per monitorare i prezzi dei prodotti è composto da diverse funzioni chiave che lavorano insieme. Analizziamo cosa fa ognuna di esse:
1. main()
main
è il punto di ingresso principale che orchestra l’intero processo di recupero e aggiornamento dei prezzi. Chiama le altre funzioni nella sequenza corretta per portare a termine il lavoro.getUrlsFromSheet()
per recuperare l’elenco degli URL e i relativi selettori CSS dal tuo foglio di calcolo.fetchHtml()
per scaricare il contenuto della pagina web.extractPrice()
per trovare il prezzo.Utilities.sleep()
) per evitare di sovraccaricare i siti web.updateSheet()
per scrivere tutti i prezzi raccolti nuovamente nel foglio di calcolo.main()
come a un Project Manager. Non esegue direttamente i compiti specializzati, ma conosce l’obiettivo generale e dirige gli specialisti (getUrlsFromSheet
, fetchHtml
, extractPrice
, updateSheet
) nell’ordine corretto, assicurando che il progetto (monitoraggio dei prezzi) sia completato passo dopo passo.2. getUrlsFromSheet()
SHEET_ID
).SHEET_NAME
).URLS_COLUMN_ID
).CSS_SELECTOR_COLUMN
).3. fetchHtml()
url
come input.UrlFetchApp.fetch()
di Google Apps Script per effettuare una richiesta a quell’URL.opzioni
specifiche (come gli header User-Agent
) per far sembrare la richiesta proveniente da un browser web standard, il che può aiutare a prevenire il blocco da parte di alcuni siti web.null
.fetchHtml()
come un Esploratore Web. Gli fornisci un indirizzo (URL), e lui va in quella posizione su Internet, fa una copia del progetto di base della pagina (l’HTML) e te lo riporta. Cerca persino di sembrare un visitatore normale per evitare sospetti.4. extractPrice()
html
e il selettore
come input.Cheerio
(che deve essere aggiunta al tuo progetto Apps Script) per analizzare (parse) l’HTML, rendendolo facile da interrogare.selettore
fornito per individuare l’elemento HTML esatto che contiene il prezzo.null
. Altrimenti, restituisce il prezzo numerico.extractPrice()
come a un Detective dei Dati. Riceve un documento di grandi dimensioni (HTML) e un indizio specifico (il selettore CSS). Usa l’indizio per trovare il dato esatto (il testo del prezzo), rimuove con cura eventuali segni che lo oscurano (simboli di valuta, virgole) e riporta il valore numerico finale trovato.5. updateSheet()
prices
(raccolto dalla funzione main
) come input.getUrlsFromSheet
).PRICE_COLUMN
), partendo dalla seconda riga e coprendo il numero necessario di righe.[[prezzo1], [prezzo2], ...]
).setValues()
.Dopo aver incollato il codice nell’editor di script:
main()
. Dovrai autorizzare lo script ad accedere al tuo Foglio Google.extractPrice(html, selector)
è la parte più specifica per ogni sito web. Il modo in cui i prezzi sono visualizzati in HTML varia da sito a sito. Pertanto, potrebbe essere necessario modificare il codice all’interno di questa funzione per adattarlo alla struttura dei siti web che stai monitorando. Probabilmente dovrai ispezionare il codice sorgente HTML del sito web per trovare un selettore CSS adatto.Questo sistema automatizzato ti farà risparmiare tempo e fatica monitorando automaticamente i prezzi dei prodotti per te. Comprendendo le basi del suo funzionamento, puoi persino personalizzarlo ulteriormente per adattarlo alle tue esigenze specifiche.
L’ultimo passaggio è pianificare l’esecuzione automatica dello script ogni giorno all’ora desiderata.
main()
.Sebbene UrlFetchApp
di Google Apps Script sia efficace per molti siti web, potrebbe non essere adatto per siti fortemente protetti che impiegano misure anti-estrazione dati come CAPTCHA e blocco IP. Tentare di aggirare queste protezioni solo con Apps Script è spesso inaffidabile.
L’estrazione dati da tali portali o l’impegnarsi in pratiche “black hat” richiede soluzioni dedicate di terze parti che utilizzano tecniche come proxy a rotazione e risolutori di CAPTCHA. Esempi di tali servizi includono Apify, Bright Data, ParseHub e Scraper API.
È importante notare che questi servizi possono spesso essere integrati nei processi di automazione di Google Workspace. Ciò significa che puoi comunque costruire un flusso di lavoro automatizzato completo all’interno della tua infrastruttura Workspace, anche se è necessaria una soluzione di estrazione dati di terze parti. I dati estratti da questi servizi possono essere trasferiti fluidamente in Google Fogli, Documenti o altre app di Workspace utilizzando le loro API o webhook. Si raccomanda vivamente di rispettare i termini di servizio dei siti web e il file `robots.txt`, e di effettuare l’estrazione dati in modo responsabile ed etico.
Google Workspace impone quote e limitazioni su `UrlFetchApp` per prevenire abusi, mantenere la stabilità del servizio e garantire un utilizzo equo tra tutti gli utenti. Queste limitazioni sono cruciali da comprendere durante la progettazione di script per l’estrazione dati dal web:
UrlFetchApp
o elaborazioni complesse, potrebbe raggiungere questo limite e interrompere l’esecuzione. Tuttavia, spesso è possibile riavviare lo script dopo che si è interrotto a causa del raggiungimento del limite di tempo di esecuzione, consentendo di elaborare set di dati più grandi o eseguire attività più complesse in più fasi.UrlFetchApp
che puoi effettuare entro specifici intervalli di tempo. Questi limiti sono progettati per prevenire il sovraccarico dei siti web di destinazione con le richieste. Al momento della stesura di questo testo, gli account Google gratuiti hanno tipicamente un limite giornaliero di circa 20.000 chiamate UrlFetchApp
, mentre gli account Google Workspace hanno generalmente un limite molto più alto, circa 100.000 chiamate al giorno.fetchAll()
: Sebbene Apps Script operi in un ambiente single-thread e non offra un vero recupero simultaneo, l’utilizzo di UrlFetchApp.fetchAll()
consente un recupero ottimizzato di più URL. Questo metodo riduce significativamente l’overhead rispetto al recupero sequenziale gestendo la comunicazione di rete in modo più efficiente, anche se le richieste non vengono eseguite in parallelo.In sintesi, l’estrazione dati dal web con Google Apps Script e Google Fogli offre alle aziende un modo potente, accessibile e, soprattutto, gratuito per automatizzare la raccolta dati e ottenere informazioni preziose. Google Apps Script è disponibile sia per gli account Google gratuiti sia per gli abbonamenti a Google Workspace, rendendolo una soluzione conveniente per aziende di ogni dimensione.
Inoltre, se utilizzi Google Workspace, affidarsi ad Apps Script per le tue esigenze di estrazione dati dal web offre una flessibilità e un’integrazione impareggiabili all’interno dei tuoi flussi di lavoro aziendali esistenti. A differenza delle rigide soluzioni di terze parti che spesso richiedono complesse integrazioni e processi di trasferimento dati, Apps Script si connette fluidamente con le altre app di Workspace.
Ti incoraggiamo a esplorare le possibilità offerte dall’estrazione dati dal web con Google Apps Script e Fogli per le esigenze della tua azienda e a sbloccare il potenziale della raccolta dati automatizzata per una maggiore efficienza e un vantaggio strategico. Il numero di scenari in cui questa potente combinazione può essere applicata è virtualmente infinito; dall’automazione delle ricerche di mercato e dell’analisi della concorrenza alla semplificazione della generazione di lead e all’aggregazione di contenuti, solo la tua immaginazione limita i potenziali casi d’uso.
Business process automation expert
1118 Budapest, Ménesi út 24. Hungary
© 2024 bestflow. All rights reserved.