🌐 Web ScrapingPro Forfait

SCRAPE_BY_XPATH

Extrait le contenu en utilisant une expression XPath (utilise un navigateur sans interface pour le rendu JS).

Signature de la Formule
=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ètreTypeRequisDescription
urlstringOuiL'URL complète de la page web à extraire (doit inclure https:// ou http://).
xpathstringOuiExpression 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

1

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".

fx
=SCRAPE_BY_XPATH("https://example.com", "//h1")

Sortie

Example Domain
2

Obtenir 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.

fx
=SCRAPE_BY_XPATH("https://blog.example.com", "//a[contains(text(), 'Read More')]/@href")

Sortie

/blog/post-1
/blog/post-2
/blog/post-3
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.

fx
=SCRAPE_BY_XPATH("https://data.example.com/stats", "//table[@id='stats']//tr/td[2]")

Sortie

1,250
3,870
945
12,300
4

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.

fx
=SCRAPE_BY_XPATH("https://shop.example.com", "//div[@data-available='true']//h3")

Sortie

Bluetooth Speaker
Wireless Mouse
Phone Stand
5

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.

fx
=SCRAPE_BY_XPATH("https://example.com/about", "(//p)[last()]")

Sortie

Contact us for more information at info@example.com.

Cas d'Usage

Finance

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.

Secteur Public

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.

Développement Web

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.

Gestion de Produit

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.

Relations Publiques

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

ASTUCE

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().

ASTUCE

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.

ASTUCE

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.

ASTUCE

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 found

Cause : 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 required

Cause : 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 failed

Cause : 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.