🌐 Web ScrapingPro Piano

SCRAPE_BY_REGEX

Estrae contenuto da una pagina web usando un pattern di espressione regolare.

Firma della Formula
=SCRAPE_BY_REGEX(url, regex, [removeHtml], [group], [renderJs])

Restituisce: string or 2D array (multiple matches returned as separate rows)

Panoramica

SCRAPE_BY_REGEX estrae contenuto da pagine web applicando un pattern di espressione regolare contro il sorgente della pagina. A differenza dei selettori CSS o XPath che navigano la struttura del documento, regex opera direttamente sul contenuto HTML o testo grezzo, rendendolo unicamente adatto per estrarre pattern specifici come prezzi, numeri di telefono, indirizzi email, date, codici prodotto, chiavi API e qualsiasi altro testo che segue un formato prevedibile.

Parametri

ParametroTipoObbligatorioDescrizione
urlstringL'URL completo della pagina web da estrarre (deve includere https:// o http://).
regexstringPattern di espressione regolare da corrispondere contro il contenuto della pagina. Usa sintassi regex standard. Le barre inverse devono essere doppie nelle formule Sheets (ad es. "\\d+" per le cifre).
removeHtmlbooleanNo (FALSE)Facoltativo. Imposta su TRUE per rimuovere tutti i tag HTML prima di applicare il regex, lasciando solo il contenuto di testo visibile. Per impostazione predefinita è FALSE (regex applicato al sorgente HTML grezzo).
groupnumberNo (0)Facoltativo. Il gruppo di cattura da restituire. 0 restituisce la corrispondenza completa, 1 restituisce il primo gruppo di cattura, 2 il secondo, ecc. Per impostazione predefinita è 0.
renderJsbooleanNoFacoltativo. Imposta su TRUE per renderizzare JavaScript prima di applicare il regex. Richiesto per contenuto caricato dinamicamente. Più lento rispetto alla modalità standard.

Esempi

1

Estrarre tutti i prezzi da una pagina

Corrisponde agli importi in euro nel formato €XX.XX su tutta la pagina. Restituisce tutte le corrispondenze come righe separate, facilitando la visualizzazione di tutti i prezzi a colpo d'occhio.

fx
=SCRAPE_BY_REGEX("https://store.example.com/deals", "\$[0-9,]+\.\d{2}")

Output

$49.99
$129.00
$24.95
$89.50
2

Estrarre indirizzi email da una pagina di contatto

Usa un pattern regex standard per email con removeHtml abilitato per trovare tutti gli indirizzi email sulla pagina indipendentemente da come sono avvolti nell'HTML.

fx
=SCRAPE_BY_REGEX("https://example.com/contact", "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}", TRUE)

Output

info@example.com
support@example.com
sales@example.com
3

Estrarre valori usando un gruppo di cattura

Corrisponde al pattern "SKU: ABC-123" e restituisce solo il gruppo di cattura (il codice SKU stesso, senza il prefisso "SKU:"). Il gruppo 1 isola il valore tra parentesi.

fx
=SCRAPE_BY_REGEX("https://store.example.com/product/123", "SKU:\s*([A-Z0-9-]+)", TRUE, 1)

Output

WH-1000XM5
4

Estrarre numeri di telefono da elenchi aziendali

Corrisponde ai numeri di telefono italiani nel formato appropriato. Il parametro removeHtml garantisce che i numeri di telefono divisi su tag HTML vengano catturati correttamente.

fx
=SCRAPE_BY_REGEX("https://directory.example.com/plumbers", "\(\d{3}\)\s*\d{3}-\d{4}", TRUE)

Output

(555) 123-4567
(555) 987-6543
(555) 246-8135

Casi d'Uso

E-commerce

Monitoraggio Prezzi su Più Rivenditori

Traccia i prezzi dei prodotti su diversi rivenditori usando pattern regex che corrispondono al formato prezzo di ogni sito. Funziona anche quando le strutture HTML differiscono tra i siti, poiché il regex punta al pattern di prezzo stesso piuttosto che al markup circostante.

Vendite

Lead Generation da Directory Aziendali

Estrai informazioni di contatto (email, numeri di telefono, indirizzi) da directory aziendali e pagine gialle. I pattern regex corrispondono in modo affidabile ai formati di dati strutturati come numeri di telefono ed email indipendentemente da come vengono visualizzati sulla pagina.

Gestione Inventario

Estrazione SKU Catalogo Prodotti

Estrai codici prodotto, SKU e numeri di modello da cataloghi fornitori e siti web di produttori. Usa regex per corrispondere ai formati di codice specifici dell'azienda (ad es. "XX-####-YY") e costruisci database prodotti completi.

Legale

Estrazione Riferimenti Documenti Legali

Estrai numeri di caso, riferimenti a statuti e citazioni di regolamenti da database legali e siti web di tribunali. Regex corrisponde precisamente ai formati di citazione come numeri di causa o riferimenti normativi.

Sviluppo Software

Tracciamento Numeri Versione e Changelog

Monitora pagine di rilascio software e changelog per tracciare numeri di versione, date di rilascio e frequenze di aggiornamento. Pattern regex come "v\d+\.\d+\.\d+" estraggono in modo affidabile numeri di versione semantica da qualsiasi formato di pagina.

Ricerca Marketing

Raccolta Dati Profili Social Media

Estrai conteggi follower, metriche di engagement e informazioni di profilo da pagine pubbliche di social media. Regex gestisce i vari formati numerici (1.2K, 1.200, 1200) usati su diverse piattaforme.

Suggerimenti Professionali

SUGGERIMENTO

Testa sempre il tuo regex su regex101.com prima di usarlo nel foglio di calcolo. Incolla il sorgente HTML (o contenuto di testo se usi removeHtml) come stringa di test per verificare che il tuo pattern corrisponda correttamente.

SUGGERIMENTO

Usa quantificatori non-greedy (*? e +?) invece di greedy (* e +) quando corrispondi contenuto tra delimitatori. Ad esempio, "<b>.*?</b>" corrisponde a singoli elementi bold, mentre "<b>.*</b>" corrisponde a tutto dal primo <b> all'ultimo </b>.

SUGGERIMENTO

Combina removeHtml con pattern di testo semplici per i risultati più affidabili. Regex su testo pulito è molto più facile da scrivere e mantenere rispetto a regex su HTML grezzo con tutti i suoi attributi e tag annidati.

SUGGERIMENTO

Usa gruppi di cattura strategicamente: avvolgi solo la parte che vuoi estrarre tra parentesi e imposta il parametro group di conseguenza. Questo ti permette di usare testo circostante come ancore di contesto senza includerlo nell'output.

SUGGERIMENTO

Per estrarre dati strutturati come tabelle, considera invece l'uso di SCRAPE_BY_CSS_PATH o SCRAPE_BY_XPATH. Regex funziona meglio per estrarre pattern di dati specifici (numeri, codici, email) piuttosto che navigare la struttura del documento.

La funzione recupera l'URL target, opzionalmente rimuove i tag HTML (quando removeHtml è TRUE), e poi applica il tuo pattern regex. Tutte le corrispondenze vengono restituite, con più corrispondenze che appaiono come righe separate nel tuo foglio di calcolo. Se usi gruppi di cattura nel tuo pattern, specifica quale gruppo restituire con il parametro group, dove 0 restituisce la corrispondenza completa e 1 restituisce il primo gruppo di cattura.

Il parametro removeHtml è particolarmente utile quando i dati di cui hai bisogno si estendono su tag HTML. Ad esempio, un prezzo potrebbe essere renderizzato come "<span class="currency">€</span><span class="amount">29.99</span>", che è difficile da corrispondere con un singolo regex su HTML grezzo. Impostare removeHtml su TRUE lo riduce a "€29.99", rendendo il tuo pattern regex più semplice e affidabile.

Per siti web che generano contenuto con JavaScript, abilita il parametro renderJs per usare un browser headless. Questo garantisce che il regex venga applicato contro il contenuto della pagina completamente renderizzato piuttosto che solo il sorgente HTML iniziale.

SCRAPE_BY_REGEX eccelle in scenari in cui i dati target non hanno una struttura HTML consistente ma hanno un formato di testo consistente. È anche preziosa come alternativa quando i selettori CSS e XPath falliscono a causa di markup offuscato o generato dinamicamente. Le applicazioni comuni includono monitoraggio prezzi, estrazione informazioni di contatto, raccolta SKU e codici prodotto, e flussi di lavoro di validazione dati.

Errori Comuni

No matches found

Causa: Il pattern regex non corrisponde a nessun contenuto sulla pagina. Questo può accadere se il pattern è troppo specifico, il contenuto viene renderizzato tramite JavaScript, o i tag HTML stanno interferendo con la corrispondenza del testo.

Soluzione: Prova ad abilitare removeHtml per corrispondere contro testo semplice invece di HTML grezzo. Verifica il tuo regex su regex101.com usando il sorgente della pagina come stringa di test. Se il contenuto viene caricato dinamicamente, abilita renderJs.

Error: URL and regex are required

Causa: Uno o entrambi i parametri richiesti sono mancanti o vuoti.

Soluzione: Assicurati che sia l'URL (incluso il protocollo) che il pattern regex siano forniti come stringhe non vuote. Verifica che i riferimenti di cella puntino a celle con valori.

Error: Invalid regular expression

Causa: Il pattern regex contiene un errore di sintassi come parentesi non corrispondenti, sequenze di escape non valide o classi di caratteri malformate.

Soluzione: Valida il tuo regex su regex101.com. Problemi comuni includono caratteri speciali senza escape (parentesi, parentesi quadre, punti necessitano di barre inverse se usati letteralmente), delimitatori di gruppo non corrispondenti e posizioni di quantificatore non valide.

Domande Frequenti

Nelle formule di Google Sheets, le stringhe sono racchiuse tra virgolette doppie. Poiché regex usa barre inverse per caratteri speciali (\d per cifre, \s per spazi bianchi), e il parser di formule di Sheets non interpreta le barre inverse come caratteri di escape all'interno delle stringhe, le scrivi come singole barre inverse: "\d+" corrisponde a una o più cifre. Se vedi comportamenti inaspettati, prova il pattern con removeHtml impostato su TRUE per semplificare il contenuto da corrispondere. Testa il tuo regex su regex101.com prima di usarlo nella funzione.

Il gruppo 0 (predefinito) restituisce l'intero testo corrispondente. Il gruppo 1 restituisce solo il testo all'interno del primo set di parentesi nel tuo pattern. Ad esempio, con il pattern "Prezzo: (€[0-9.]+)" applicato al testo "Prezzo: €29.99", il gruppo 0 restituisce "Prezzo: €29.99" e il gruppo 1 restituisce "€29.99". Questo è utile quando devi corrispondere a un pattern per contesto ma estrarre solo parte di esso. Puoi avere più gruppi di cattura (gruppo 2, gruppo 3, ecc.) aggiungendo più sezioni tra parentesi al tuo pattern.

Abilita removeHtml (imposta su TRUE) quando: (1) Il testo che vuoi corrispondere è diviso su più tag HTML, come un prezzo visualizzato come "<span>€</span><span>29</span>.<span>99</span>". (2) I tag HTML stanno interferendo con le corrispondenze del tuo pattern. (3) Vuoi corrispondere solo contro il contenuto di testo visibile, ignorando tutto il markup. (4) Il tuo regex è progettato per testo semplice, non HTML. Lascialo su FALSE quando devi specificamente corrispondere ad attributi HTML, nomi di tag o struttura del markup.

Il motore regex supporta flag inline usando la sintassi (?flags) all'inizio del tuo pattern. Usa "(?i)" per corrispondenza case-insensitive, "(?s)" per modalità single-line (punto corrisponde a newline), e "(?m)" per modalità multiline. Ad esempio, "(?i)prezzo:\s*€[0-9.]+" corrisponde alle varianti "Prezzo:", "PREZZO:" e "prezzo:". Puoi combinare flag: "(?im)" abilita entrambe le modalità case-insensitive e multiline.

Per impostazione predefinita, il regex viene applicato al sorgente HTML grezzo, che include tutti i tag, attributi e markup. Ad esempio, un pattern come "[A-Z][a-z]+" destinato a corrispondere a parole maiuscole potrebbe anche corrispondere a nomi di tag come "Div" o "Span". Imposta removeHtml su TRUE per rimuovere prima tutti i tag HTML, così il tuo regex vede solo il contenuto di testo visibile. In alternativa, rendi il tuo regex più specifico per escludere pattern HTML.

Il motore regex supporta sintassi completa compatibile con PCRE inclusi lookahead, lookbehind, gruppi non di cattura, quantificatori lazy e classi di caratteri. Tuttavia, pattern estremamente complessi con backtracking eccessivo (come quantificatori annidati come "(a+)+") possono causare errori di timeout. Mantieni i pattern il più semplici e specifici possibile. Se ti trovi a scrivere pattern regex molto lunghi, considera l'uso di SCRAPE_BY_CSS_PATH o SCRAPE_BY_XPATH per restringere prima il contenuto, poi usa regex sul risultato.

REGEXEXTRACT è una funzione nativa di Google Sheets che applica un regex a testo già nel tuo foglio di calcolo. SCRAPE_BY_REGEX recupera una pagina web e applica il regex al contenuto della pagina, combinando recupero web ed estrazione in un singolo passaggio. Potresti ottenere risultati simili usando SCRAPE_BY_CSS_PATH per ottenere il testo della pagina e poi REGEXEXTRACT sul risultato, ma SCRAPE_BY_REGEX è più efficiente poiché elabora tutto lato server in una richiesta e può restituire più corrispondenze.

Per impostazione predefinita, il punto (.) nel regex non corrisponde ai caratteri newline. Se hai bisogno di corrispondere su interruzioni di riga, usa il flag inline "(?s)" all'inizio del tuo pattern per abilitare la modalità single-line, dove il punto corrisponde a qualsiasi carattere inclusi i newline. Ad esempio, "(?s)<div class="product">.*?</div>" corrisponde a un div e tutto il suo contenuto su più righe. Il flag (?m) fa sì che ^ e $ corrispondano all'inizio/fine di ogni riga piuttosto che all'intera stringa.

Funzioni Correlate

Inizia a usare SCRAPE_BY_REGEX oggi

Installa Unlimited Sheets per ottenere SCRAPE_BY_REGEX e altre 41 potenti funzioni in Google Sheets.