SCRAPE_BY_XPATH
Estrae contenuto usando espressione XPath (usa browser headless per rendering JS).
=SCRAPE_BY_XPATH(url, xpath)Restituisce: string or 2D array (multiple matches returned as separate rows)
Panoramica
SCRAPE_BY_XPATH estrae contenuto da pagine web usando espressioni XPath, un potente linguaggio di query per navigare strutture di documenti XML e HTML. XPath fornisce capacità oltre i selettori CSS, inclusa la possibilità di attraversare verso l'alto l'albero del documento, selezionare elementi in base al loro contenuto di testo, usare logica condizionale ed eseguire calcoli all'interno della query stessa. Ogni chiamata SCRAPE_BY_XPATH usa un browser headless per il rendering completo di JavaScript, rendendola la scelta preferita per estrarre siti web dinamici moderni.
Parametri
| Parametro | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
url | string | Sì | L'URL completo della pagina web da estrarre (deve includere https:// o http://). |
xpath | string | Sì | Espressione XPath che punta all'elemento/agli elementi da estrarre. Esempi: "//h1" (tutti gli elementi h1), "//div[@class='content']" (div con classe "content"), "//a/@href" (tutti gli URL dei link), "//table//tr/td[2]" (seconda colonna di tutte le righe della tabella). |
Esempi
Estrarre l'intestazione principale da una pagina
Seleziona il primo elemento h1 nella pagina e restituisce il suo contenuto di testo. La doppia barra "//" significa "trova ovunque nel documento."
=SCRAPE_BY_XPATH("https://example.com", "//h1")Output
Example DomainOttenere tutti i link contenenti testo specifico
Usa la funzione contains() per trovare elementi anchor il cui testo include "Leggi di più" ed estrarre i loro attributi href. Dimostra la selezione basata su testo di XPath che CSS non può replicare.
=SCRAPE_BY_XPATH("https://blog.example.com", "//a[contains(text(), 'Read More')]/@href")Output
| /blog/post-1 |
| /blog/post-2 |
| /blog/post-3 |
Estrarre la seconda colonna da una tabella dati
Naviga verso una tabella specifica per il suo ID, poi seleziona la seconda cella (td[2]) di ogni riga. Perfetto per estrarre una singola colonna di dati tabulari.
=SCRAPE_BY_XPATH("https://data.example.com/stats", "//table[@id='stats']//tr/td[2]")Output
| 1,250 |
| 3,870 |
| 945 |
| 12,300 |
Estrarre nomi di prodotti da elementi con attributi dati specifici
Punta solo ai prodotti disponibili filtrando su un attributo dati, poi estrae l'elemento h3 all'interno di ogni contenitore corrispondente.
=SCRAPE_BY_XPATH("https://shop.example.com", "//div[@data-available='true']//h3")Output
| Bluetooth Speaker |
| Wireless Mouse |
| Phone Stand |
Ottenere l'ultimo paragrafo in una pagina
Usa la funzione XPath last() per selezionare solo l'elemento paragrafo finale. Dimostra capacità di selezione posizionale uniche di XPath.
=SCRAPE_BY_XPATH("https://example.com/about", "(//p)[last()]")Output
Contact us for more information at info@example.com.Casi d'Uso
Estrazione Dati Finanziari
Estrai prezzi azionari, metriche finanziarie e dati di mercato da portali finanziari e pagine investor relations. XPath permette il puntamento preciso di celle di tabella specifiche e widget finanziari caricati dinamicamente.
Raccolta Dati Governativi
Estrai registri pubblici, documenti normativi e report statistici da siti web governativi. XPath gestisce le strutture di tabella complesse e i formati di documenti annidati comunemente usati sui portali governativi.
Audit Migrazione Contenuti
Audita contenuti di siti web legacy prima della migrazione estraendo testo, immagini, metadati e link interni usando XPath. Costruisci inventari di contenuto completi che mappano vecchi URL ai loro asset estratti.
Confronto Funzionalità Concorrenti
Estrai pagine di prezzi dei concorrenti e liste di funzionalità per costruire matrici di confronto. Usa XPath per estrarre nomi di funzionalità, indicatori di disponibilità e dettagli dei livelli di prezzo in fogli di calcolo organizzati.
Monitoraggio Notizie e Media
Monitora siti di notizie e database di comunicati stampa per menzioni del brand, estraendo titoli di articoli, date di pubblicazione e nomi di autori. La selezione basata su testo di XPath aiuta a filtrare articoli che menzionano parole chiave specifiche.
Suggerimenti Professionali
Usa la scorciatoia della console del browser $x("//tuo/xpath") per testare rapidamente espressioni XPath prima di usarle nel tuo foglio di calcolo. Questo è più veloce del metodo document.evaluate().
Quando i nomi di classe contengono spazi (più classi), usa contains(@class, "classe-target") invece di @class="classe-target" per corrispondere agli elementi che hanno la classe target tra diverse classi.
Usa l'operatore pipe | per combinare più espressioni XPath in una singola query: "//h1 | //h2 | //h3" seleziona tutte le intestazioni di livello superiore. I risultati vengono restituiti in ordine di documento.
Per le tabelle, usa "//table[1]//tr/td[1]" per ottenere la prima colonna e "//table[1]//tr/td[2]" per ottenere la seconda colonna. Posiziona questi in colonne di foglio di calcolo adiacenti per ricostruire la struttura della tabella.
Le espressioni XPath ti permettono di puntare agli elementi con precisione che i selettori CSS non possono eguagliare. Puoi selezionare elementi in base al loro contenuto di testo (//a[contains(text(), "Acquista ora")]), navigare verso elementi padre o fratelli (//span[@class="price"]/parent::div), combinare più condizioni (//div[@class="product" and @data-available="true"]), e persino usare funzioni come position(), last() e string-length() all'interno delle tue query.
Poiché SCRAPE_BY_XPATH esegue sempre il rendering di JavaScript, gestisce in modo affidabile applicazioni a pagina singola, contenuto caricato dinamicamente, sezioni con scroll infinito e framework renderizzati lato client come React, Vue e Angular. Questo la rende leggermente più lenta di SCRAPE_BY_CSS_PATH in modalità standard ma garantisce che tu ottenga sempre il contenuto della pagina completamente renderizzato.
La funzione restituisce una singola stringa quando un elemento corrisponde, o un array 2D con un valore per riga quando più elementi corrispondono. Questo formato di output si integra naturalmente con Google Sheets, permettendoti di usare i risultati con FILTER, SORT, UNIQUE e altre funzioni array per ulteriore elaborazione dei dati.
SCRAPE_BY_XPATH è particolarmente preziosa per analisti di dati, professionisti SEO e ricercatori che necessitano di controllo preciso su quali elementi estrarre e sono a loro agio con la sintassi XPath.
Errori Comuni
No matches foundCausa: L'espressione XPath non corrisponde a nessun elemento nella pagina renderizzata. Questo può accadere se l'espressione ha un errore di sintassi, l'elemento target è all'interno di un iframe o Shadow DOM, o i nomi di classe vengono generati dinamicamente.
Soluzione: Testa l'XPath nella console del tuo browser usando $x("tuo-xpath-qui"). Controlla errori di battitura nei nomi degli elementi e nei valori degli attributi. Se l'elemento è all'interno di un iframe, prova ad estrarre direttamente l'URL dell'iframe.
Error: URL and XPath are requiredCausa: Uno o entrambi i parametri richiesti sono vuoti o mancanti.
Soluzione: Assicurati che sia l'URL (con protocollo) che l'espressione XPath siano forniti come stringhe non vuote. Verifica che i riferimenti di cella puntino a celle con valori.
Error: XPath evaluation failedCausa: L'espressione XPath contiene un errore di sintassi che ne impedisce la valutazione. Problemi comuni includono virgolette non corrispondenti, nomi di funzione non validi o predicati malformati.
Soluzione: Rivedi la tua espressione XPath per errori di sintassi. Assicurati che le virgolette siano correttamente corrispondenti (usa virgolette singole dentro virgolette doppie o viceversa). Verifica che i nomi delle funzioni siano scritti correttamente. Testa prima l'espressione nella console del browser.
Domande Frequenti
I selettori CSS e XPath entrambi puntano agli elementi HTML, ma differiscono nelle capacità. I selettori CSS sono più semplici e funzionano bene per selezionare elementi per classe, ID o nome tag (ad es. ".price", "#header", "h1"). XPath è più potente e può: attraversare verso l'alto l'albero del documento (selezionare un genitore basato su un figlio), filtrare per contenuto di testo (//a[contains(text(), "Acquista")]), usare condizioni logiche (and/or), selezionare per posizione (//li[3]) e usare funzioni come string-length() e normalize-space(). Usa selettori CSS per estrazione semplice e XPath quando hai bisogno di capacità di query avanzate.
Sì. A differenza di SCRAPE_BY_CSS_PATH che offre il rendering JavaScript come parametro opzionale, SCRAPE_BY_XPATH usa sempre un browser headless che esegue completamente JavaScript prima di valutare l'espressione XPath. Questo significa che funziona in modo affidabile su tutti i tipi di siti web incluse applicazioni a pagina singola, ma è più lento di SCRAPE_BY_CSS_PATH in modalità standard (non-JS). Se la velocità è una priorità e la pagina target non richiede rendering JavaScript, considera invece l'uso di SCRAPE_BY_CSS_PATH.
Aggiungi /@nomeAttributo alla tua espressione XPath. Ad esempio, per ottenere tutte le sorgenti immagine: "//img/@src". Per ottenere attributi href dai link: "//a/@href". Per ottenere il valore di un attributo dati personalizzato: "//div/@data-product-id". Puoi anche combinare l'estrazione di attributi con filtri: "//a[@class='external']/@href" ottiene valori href solo dai link con la classe "external".
Sì, questa è una delle funzionalità più potenti di XPath. Usa text() per corrispondere al contenuto di testo: "//a[text()='Clicca qui']" corrisponde ai link con il testo esatto "Clicca qui". Usa contains() per corrispondenze parziali: "//p[contains(text(), 'prezzo')]" corrisponde ai paragrafi contenenti la parola "prezzo". Usa starts-with() per corrispondenza di prefisso: "//div[starts-with(@class, 'product-')]" corrisponde ai div la cui classe inizia con "product-". Questi selettori basati su testo non sono disponibili con i selettori CSS.
Le cause comuni includono: (1) L'elemento è all'interno di un iframe, che è un documento separato che XPath non può raggiungere. (2) L'elemento è all'interno di un componente Shadow DOM, che crea un albero DOM incapsulato. (3) La sintassi XPath ha un errore, come virgolette errate o problemi di namespace. (4) La pagina usa nomi di classe dinamici che cambiano ad ogni caricamento (comune con librerie CSS-in-JS). Testa il tuo XPath nella console del browser usando document.evaluate() o la scorciatoia $x(): $x("//tuo/xpath/qui") per verificare che corrisponda agli elementi attesi.
La maggior parte delle pagine HTML moderne non richiede gestione di namespace, e lo scraper le elabora come HTML standard. Tuttavia, se incontri problemi di namespace (tipicamente con documenti XML o XHTML strict), prova ad usare la funzione local-name() nel tuo XPath: "//*[local-name()='div']" invece di "//div". Questo ignora i prefissi di namespace e corrisponde agli elementi solo per il loro nome di tag locale.
XPath fornisce molte funzioni integrate: position() restituisce l'indice dell'elemento (//li[position()<=3] ottiene i primi 3 elementi della lista); last() seleziona l'ultimo elemento ((//p)[last()]); count() conta gli elementi (//ul[count(li)>5] seleziona liste con più di 5 elementi); normalize-space() rimuove gli spazi bianchi; translate() converte caratteri; concat() unisce stringhe; e not() nega condizioni (//div[not(@class="hidden")] seleziona div visibili). Queste funzioni possono essere combinate per query complesse.
Funzioni Correlate
Inizia a usare SCRAPE_BY_XPATH oggi
Installa Unlimited Sheets per ottenere SCRAPE_BY_XPATH e altre 41 potenti funzioni in Google Sheets.