SCRAPE_BY_XPATH
Extrait le contenu en utilisant une expression XPath (utilise un navigateur sans interface pour le rendu JS).
=SCRAPE_BY_XPATH(url, xpath)Retourne : string or 2D array (multiple matches returned as separate rows)
Aperçu
SCRAPE_BY_XPATH extrait le contenu des pages web en utilisant des expressions XPath, un langage de requête puissant pour naviguer dans les structures de documents XML et HTML. XPath fournit des capacités au-delà des sélecteurs CSS, y compris la possibilité de remonter dans l'arbre du document, de sélectionner des éléments par leur contenu texte, d'utiliser une logique conditionnelle et d'effectuer des calculs au sein de la requête elle-même. Chaque appel SCRAPE_BY_XPATH utilise un navigateur sans interface pour un rendu JavaScript complet, ce qui en fait le choix privilégié pour extraire des sites web dynamiques modernes.
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
url | string | Oui | L'URL complète de la page web à extraire (doit inclure https:// ou http://). |
xpath | string | Oui | Expression XPath ciblant le(s) élément(s) à extraire. Exemples : "//h1" (tous les éléments h1), "//div[@class='content']" (divs avec la classe "content"), "//a/@href" (toutes les URLs de liens), "//table//tr/td[2]" (deuxième colonne de toutes les lignes de tableau). |
Exemples
Extraire le titre principal d'une page
Sélectionne le premier élément h1 de la page et renvoie son contenu texte. La double barre "//" signifie "trouver n'importe où dans le document".
=SCRAPE_BY_XPATH("https://example.com", "//h1")Sortie
Example DomainObtenir tous les liens contenant un texte spécifique
Utilise la fonction contains() pour trouver les éléments anchor dont le texte inclut "Lire la suite" et extrait leurs attributs href. Démontre la sélection basée sur le texte XPath que CSS ne peut pas reproduire.
=SCRAPE_BY_XPATH("https://blog.example.com", "//a[contains(text(), 'Read More')]/@href")Sortie
| /blog/post-1 |
| /blog/post-2 |
| /blog/post-3 |
Extraire la deuxième colonne d'un tableau de données
Navigue vers un tableau spécifique par son ID, puis sélectionne la deuxième cellule (td[2]) de chaque ligne. Parfait pour extraire une seule colonne de données tabulaires.
=SCRAPE_BY_XPATH("https://data.example.com/stats", "//table[@id='stats']//tr/td[2]")Sortie
| 1,250 |
| 3,870 |
| 945 |
| 12,300 |
Extraire les noms de produits d'éléments avec des attributs de données spécifiques
Cible uniquement les produits en stock en filtrant sur un attribut de données, puis extrait l'élément h3 dans chaque conteneur correspondant.
=SCRAPE_BY_XPATH("https://shop.example.com", "//div[@data-available='true']//h3")Sortie
| Bluetooth Speaker |
| Wireless Mouse |
| Phone Stand |
Obtenir le dernier paragraphe d'une page
Utilise la fonction XPath last() pour sélectionner uniquement l'élément de paragraphe final. Démontre les capacités de sélection positionnelle uniques à XPath.
=SCRAPE_BY_XPATH("https://example.com/about", "(//p)[last()]")Sortie
Contact us for more information at info@example.com.Cas d'Usage
Extraction de Données Financières
Extrayez les cours d'actions, les métriques financières et les données de marché des portails financiers et des pages de relations investisseurs. XPath permet un ciblage précis de cellules de tableau spécifiques et de widgets financiers chargés dynamiquement.
Collecte de Données Gouvernementales
Extrayez les dossiers publics, les dépôts réglementaires et les rapports statistiques des sites web gouvernementaux. XPath gère les structures de tableau complexes et les formats de documents imbriqués couramment utilisés sur les portails gouvernementaux.
Audits de Migration de Contenu
Auditez le contenu du site web hérité avant la migration en extrayant le texte, les images, les métadonnées et les liens internes à l'aide de XPath. Construisez des inventaires de contenu complets qui mappent les anciennes URLs à leurs actifs extraits.
Comparaison de Fonctionnalités Concurrentes
Extrayez les pages de tarification des concurrents et les listes de fonctionnalités pour créer des matrices de comparaison. Utilisez XPath pour extraire les noms de fonctionnalités, les indicateurs de disponibilité et les détails des niveaux de tarification dans des feuilles de calcul organisées.
Surveillance des Actualités et Médias
Surveillez les sites d'actualités et les bases de données de communiqués de presse pour les mentions de marque, en extrayant les titres d'articles, les dates de publication et les noms d'auteurs. La sélection basée sur le texte XPath aide à filtrer les articles mentionnant des mots-clés spécifiques.
Conseils Pro
Utilisez le raccourci de console du navigateur $x("//votre/xpath") pour tester rapidement les expressions XPath avant de les utiliser dans votre feuille de calcul. C'est plus rapide que la méthode document.evaluate().
Lorsque les noms de classe contiennent des espaces (plusieurs classes), utilisez contains(@class, "classe-cible") au lieu de @class="classe-cible" pour correspondre aux éléments qui ont la classe cible parmi plusieurs classes.
Utilisez l'opérateur pipe | pour combiner plusieurs expressions XPath en une seule requête : "//h1 | //h2 | //h3" sélectionne tous les titres de niveau supérieur. Les résultats sont renvoyés dans l'ordre du document.
Pour les tableaux, utilisez "//table[1]//tr/td[1]" pour obtenir la première colonne et "//table[1]//tr/td[2]" pour obtenir la deuxième colonne. Placez-les dans des colonnes de feuille de calcul adjacentes pour reconstruire la structure du tableau.
Les expressions XPath vous permettent de cibler des éléments avec une précision que les sélecteurs CSS ne peuvent égaler. Vous pouvez sélectionner des éléments en fonction de leur contenu texte (//a[contains(text(), "Acheter maintenant")]), naviguer vers des éléments parents ou frères (//span[@class="price"]/parent::div), combiner plusieurs conditions (//div[@class="product" and @data-available="true"]), et même utiliser des fonctions comme position(), last() et string-length() dans vos requêtes.
Comme SCRAPE_BY_XPATH rend toujours JavaScript, il gère de manière fiable les applications monopages, le contenu chargé dynamiquement, les sections de défilement infini et les frameworks rendus côté client comme React, Vue et Angular. Cela le rend légèrement plus lent que SCRAPE_BY_CSS_PATH en mode standard mais garantit que vous obtenez toujours le contenu de page entièrement rendu.
La fonction renvoie une chaîne unique lorsqu'un élément correspond, ou un tableau 2D avec une valeur par ligne lorsque plusieurs éléments correspondent. Ce format de sortie s'intègre naturellement avec Google Sheets, vous permettant d'utiliser les résultats avec FILTER, SORT, UNIQUE et d'autres fonctions de tableau pour un traitement de données supplémentaire.
SCRAPE_BY_XPATH est particulièrement précieuse pour les analystes de données, les professionnels du SEO et les chercheurs qui ont besoin d'un contrôle précis sur les éléments qu'ils extraient et sont à l'aise avec la syntaxe XPath.
Erreurs Courantes
No matches foundCause : L'expression XPath ne correspond à aucun élément de la page rendue. Cela peut se produire si l'expression a une erreur de syntaxe, l'élément cible est à l'intérieur d'une iframe ou Shadow DOM, ou les noms de classe sont générés dynamiquement.
Solution : Testez le XPath dans la console de votre navigateur en utilisant $x("votre-xpath-ici"). Vérifiez les fautes de frappe dans les noms d'éléments et les valeurs d'attributs. Si l'élément est à l'intérieur d'une iframe, essayez d'extraire l'URL de l'iframe directement.
Error: URL and XPath are requiredCause : Un ou les deux paramètres requis sont vides ou manquants.
Solution : Assurez-vous que l'URL (avec protocole) et l'expression XPath sont toutes deux fournies comme chaînes non vides. Vérifiez que les références de cellule pointent vers des cellules avec des valeurs.
Error: XPath evaluation failedCause : L'expression XPath contient une erreur de syntaxe qui empêche son évaluation. Les problèmes courants incluent des guillemets non appariés, des noms de fonction invalides ou des prédicats mal formés.
Solution : Examinez votre expression XPath pour les erreurs de syntaxe. Assurez-vous que les guillemets sont correctement appariés (utilisez des guillemets simples à l'intérieur de guillemets doubles ou vice versa). Vérifiez que les noms de fonction sont correctement orthographiés. Testez l'expression dans la console du navigateur d'abord.
Questions Fréquentes
Les sélecteurs CSS et XPath ciblent tous deux les éléments HTML, mais ils diffèrent par leurs capacités. Les sélecteurs CSS sont plus simples et fonctionnent bien pour sélectionner des éléments par classe, ID ou nom de balise (par exemple, ".price", "#header", "h1"). XPath est plus puissant et peut : remonter dans l'arbre du document (sélectionner un parent en fonction d'un enfant), filtrer par contenu texte (//a[contains(text(), "Acheter")]), utiliser des conditions logiques (and/or), sélectionner par position (//li[3]) et utiliser des fonctions comme string-length() et normalize-space(). Utilisez les sélecteurs CSS pour une extraction simple et XPath lorsque vous avez besoin de capacités de requête avancées.
Oui. Contrairement à SCRAPE_BY_CSS_PATH qui offre le rendu JavaScript comme paramètre optionnel, SCRAPE_BY_XPATH utilise toujours un navigateur sans interface qui exécute complètement JavaScript avant d'évaluer l'expression XPath. Cela signifie qu'il fonctionne de manière fiable sur tous les types de sites web, y compris les applications monopages, mais il est plus lent que SCRAPE_BY_CSS_PATH en mode standard (sans JS). Si la vitesse est une priorité et que la page cible ne nécessite pas de rendu JavaScript, envisagez d'utiliser SCRAPE_BY_CSS_PATH à la place.
Ajoutez /@nomAttribut à votre expression XPath. Par exemple, pour obtenir toutes les sources d'images : "//img/@src". Pour obtenir les attributs href des liens : "//a/@href". Pour obtenir la valeur d'un attribut de données personnalisé : "//div/@data-product-id". Vous pouvez également combiner l'extraction d'attributs avec des filtres : "//a[@class='external']/@href" obtient les valeurs href uniquement des liens avec la classe "external".
Oui, c'est l'une des fonctionnalités les plus puissantes de XPath. Utilisez text() pour correspondre au contenu texte : "//a[text()='Cliquez ici']" correspond aux liens avec le texte exact "Cliquez ici". Utilisez contains() pour les correspondances partielles : "//p[contains(text(), 'prix')]" correspond aux paragraphes contenant le mot "prix". Utilisez starts-with() pour la correspondance de préfixe : "//div[starts-with(@class, 'product-')]" correspond aux divs dont la classe commence par "product-". Ces sélecteurs basés sur le texte ne sont pas disponibles avec les sélecteurs CSS.
Les causes courantes incluent : (1) L'élément est à l'intérieur d'une iframe, qui est un document séparé que XPath ne peut pas atteindre. (2) L'élément est à l'intérieur d'un composant Shadow DOM, qui crée un arbre DOM encapsulé. (3) La syntaxe XPath a une erreur, comme des guillemets incorrects ou des problèmes d'espace de noms. (4) La page utilise des noms de classe dynamiques qui changent à chaque chargement (courant avec les bibliothèques CSS-in-JS). Testez votre XPath dans la console du navigateur en utilisant document.evaluate() ou le raccourci $x() : $x("//votre/xpath/ici") pour vérifier qu'il correspond aux éléments attendus.
La plupart des pages HTML modernes ne nécessitent pas de gestion des espaces de noms, et le scraper les traite comme du HTML standard. Cependant, si vous rencontrez des problèmes d'espace de noms (typiquement avec des documents XML ou XHTML stricts), essayez d'utiliser la fonction local-name() dans votre XPath : "//*[local-name()='div']" au lieu de "//div". Cela ignore les préfixes d'espace de noms et correspond aux éléments uniquement par leur nom de balise local.
XPath fournit de nombreuses fonctions intégrées : position() renvoie l'index de l'élément (//li[position()<=3] obtient les 3 premiers éléments de liste) ; last() sélectionne le dernier élément ((//p)[last()]) ; count() compte les éléments (//ul[count(li)>5] sélectionne les listes avec plus de 5 éléments) ; normalize-space() supprime les espaces blancs ; translate() convertit les caractères ; concat() joint les chaînes ; et not() nie les conditions (//div[not(@class="hidden")] sélectionne les divs visibles). Ces fonctions peuvent être combinées pour des requêtes complexes.
Fonctions Associées
Commencez à utiliser SCRAPE_BY_XPATH aujourd'hui
Installez Unlimited Sheets pour obtenir SCRAPE_BY_XPATH et 41 autres fonctions puissantes dans Google Sheets.