🌐 Web ScrapingPro Forfait

SCRAPE_BY_REGEX

Extrait le contenu d'une page web en utilisant un motif d'expression régulière.

Signature de la Formule
=SCRAPE_BY_REGEX(url, regex, [removeHtml], [group], [renderJs])

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

Aperçu

SCRAPE_BY_REGEX extrait le contenu des pages web en appliquant un motif d'expression régulière au code source de la page. Contrairement aux sélecteurs CSS ou XPath qui naviguent dans la structure du document, regex opère directement sur le contenu HTML ou texte brut, ce qui le rend uniquement adapté pour extraire des motifs spécifiques comme les prix, les numéros de téléphone, les adresses e-mail, les dates, les codes produit, les clés API et tout autre texte qui suit un format prévisible.

Paramètres

ParamètreTypeRequisDescription
urlstringOuiL'URL complète de la page web à extraire (doit inclure https:// ou http://).
regexstringOuiMotif d'expression régulière à faire correspondre au contenu de la page. Utilisez la syntaxe regex standard. Les barres obliques inverses doivent être doublées dans les formules Sheets (par exemple, "\\d+" pour les chiffres).
removeHtmlbooleanNon (FALSE)Optionnel. Définir sur TRUE pour supprimer toutes les balises HTML avant d'appliquer le regex, ne laissant que le contenu texte visible. Par défaut FALSE (regex appliqué au code HTML source brut).
groupnumberNon (0)Optionnel. Le groupe de capture à renvoyer. 0 renvoie la correspondance complète, 1 renvoie le premier groupe de capture, 2 le deuxième, etc. Par défaut 0.
renderJsbooleanNonOptionnel. Définir sur TRUE pour rendre JavaScript avant d'appliquer le regex. Requis pour le contenu chargé dynamiquement. Plus lent que le mode standard.

Exemples

1

Extraire tous les prix d'une page

Correspond aux montants en euros au format XX,XX€ sur toute la page. Renvoie toutes les correspondances en lignes séparées, facilitant la visualisation de tous les prix en un coup d'œil.

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

Sortie

$49.99
$129.00
$24.95
$89.50
2

Extraire les adresses e-mail d'une page de contact

Utilise un motif regex d'e-mail standard avec removeHtml activé pour trouver toutes les adresses e-mail sur la page indépendamment de la façon dont elles sont encapsulées dans le HTML.

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

Sortie

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

Extraire des valeurs en utilisant un groupe de capture

Correspond au motif "SKU: ABC-123" et renvoie uniquement le groupe de capture (le code SKU lui-même, sans le préfixe "SKU:"). Le groupe 1 isole la valeur à l'intérieur des parenthèses.

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

Sortie

WH-1000XM5
4

Extraire les numéros de téléphone des listes d'entreprises

Correspond aux numéros de téléphone français au format XX XX XX XX XX. Le paramètre removeHtml garantit que les numéros de téléphone divisés entre les balises HTML sont correctement capturés.

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

Sortie

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

Cas d'Usage

E-commerce

Surveillance des Prix sur Plusieurs Détaillants

Suivez les prix des produits chez différents détaillants en utilisant des motifs regex qui correspondent au format de prix de chaque site. Fonctionne même lorsque les structures HTML diffèrent entre les sites, car le regex cible le motif de prix lui-même plutôt que le balisage environnant.

Ventes

Génération de Leads à partir d'Annuaires d'Entreprises

Extrayez les informations de contact (e-mails, numéros de téléphone, adresses) des annuaires d'entreprises et des pages jaunes. Les motifs regex correspondent de manière fiable aux formats de données structurées comme les numéros de téléphone et les e-mails indépendamment de la façon dont ils sont affichés sur la page.

Gestion des Stocks

Extraction de SKU de Catalogues de Produits

Extrayez les codes produit, les SKU et les numéros de modèle des catalogues de fournisseurs et des sites web de fabricants. Utilisez regex pour correspondre aux formats de code spécifiques à l'entreprise (par exemple, "XX-####-YY") et construisez des bases de données de produits complètes.

Juridique

Extraction de Références de Documents Juridiques

Extrayez les numéros de dossier, les références de statut et les citations de règlements des bases de données juridiques et des sites web de tribunaux. Regex correspond précisément aux formats de citation comme "Article L. 1234-5" ou les numéros de dossier.

Développement Logiciel

Suivi des Numéros de Version et Changelogs

Surveillez les pages de version logicielle et les changelogs pour suivre les numéros de version, les dates de publication et les fréquences de mise à jour. Les motifs regex comme "v\d+\.\d+\.\d+" extraient de manière fiable les numéros de version sémantique de n'importe quel format de page.

Recherche Marketing

Collecte de Données de Profils de Réseaux Sociaux

Extrayez les nombres d'abonnés, les métriques d'engagement et les informations de profil des pages publiques de réseaux sociaux. Regex gère les différents formats de nombres (1,2K, 1 200, 1200) utilisés sur différentes plateformes.

Conseils Pro

ASTUCE

Testez toujours votre regex sur regex101.com avant de l'utiliser dans la feuille de calcul. Collez le code HTML source (ou le contenu texte si vous utilisez removeHtml) comme chaîne de test pour vérifier que votre motif correspond correctement.

ASTUCE

Utilisez des quantificateurs non gourmands (*? et +?) au lieu de gourmands (* et +) lors de la correspondance de contenu entre délimiteurs. Par exemple, "<b>.*?</b>" correspond aux éléments gras individuels, tandis que "<b>.*</b>" correspond à tout du premier <b> au dernier </b>.

ASTUCE

Combinez removeHtml avec des motifs de texte simples pour les résultats les plus fiables. Regex sur du texte propre est beaucoup plus facile à écrire et à maintenir que regex sur du HTML brut avec tous ses attributs et balises imbriquées.

ASTUCE

Utilisez les groupes de capture stratégiquement : n'entourez que la partie que vous voulez extraire entre parenthèses et définissez le paramètre group en conséquence. Cela vous permet d'utiliser le texte environnant comme ancres de contexte sans l'inclure dans la sortie.

ASTUCE

Pour extraire des données structurées comme des tableaux, envisagez d'utiliser SCRAPE_BY_CSS_PATH ou SCRAPE_BY_XPATH à la place. Regex fonctionne mieux pour extraire des motifs de données spécifiques (nombres, codes, e-mails) plutôt que pour naviguer dans la structure du document.

La fonction récupère l'URL cible, supprime optionnellement les balises HTML (lorsque removeHtml est TRUE), puis applique votre motif regex. Toutes les correspondances sont renvoyées, avec plusieurs correspondances apparaissant en lignes séparées dans votre feuille de calcul. Si vous utilisez des groupes de capture dans votre motif, spécifiez quel groupe renvoyer avec le paramètre group, où 0 renvoie la correspondance complète et 1 renvoie le premier groupe de capture.

Le paramètre removeHtml est particulièrement utile lorsque les données dont vous avez besoin s'étendent sur plusieurs balises HTML. Par exemple, un prix pourrait être rendu comme "<span class="currency">€</span><span class="amount">29,99</span>", ce qui est difficile à faire correspondre avec un seul regex sur le HTML brut. Définir removeHtml sur TRUE réduit cela à "29,99€", rendant votre motif regex plus simple et plus fiable.

Pour les sites web qui génèrent du contenu avec JavaScript, activez le paramètre renderJs pour utiliser un navigateur sans interface. Cela garantit que le regex est appliqué au contenu de page entièrement rendu plutôt qu'au seul code HTML source initial.

SCRAPE_BY_REGEX excelle dans les scénarios où les données cibles n'ont pas de structure HTML cohérente mais ont un format texte cohérent. Il est également précieux comme solution de repli lorsque les sélecteurs CSS et XPath échouent en raison d'un balisage obscurci ou généré dynamiquement. Les applications courantes incluent la surveillance des prix, l'extraction d'informations de contact, la collecte de SKU et de codes produit, et les flux de travail de validation de données.

Erreurs Courantes

No matches found

Cause : Le motif regex ne correspond à aucun contenu de la page. Cela peut se produire si le motif est trop spécifique, le contenu est rendu via JavaScript, ou les balises HTML interfèrent avec la correspondance de texte.

Solution : Essayez d'activer removeHtml pour correspondre au texte brut au lieu du HTML brut. Vérifiez votre regex sur regex101.com en utilisant le code source de la page comme chaîne de test. Si le contenu est chargé dynamiquement, activez renderJs.

Error: URL and regex are required

Cause : Un ou les deux paramètres requis sont manquants ou vides.

Solution : Assurez-vous que l'URL (y compris le protocole) et le motif regex sont tous deux fournis comme chaînes non vides. Vérifiez que les références de cellule pointent vers des cellules avec des valeurs.

Error: Invalid regular expression

Cause : Le motif regex contient une erreur de syntaxe telle que des parenthèses non appariées, des séquences d'échappement invalides ou des classes de caractères mal formées.

Solution : Validez votre regex sur regex101.com. Les problèmes courants incluent des caractères spéciaux non échappés (les parenthèses, crochets, points nécessitent des barres obliques inverses s'ils sont utilisés littéralement), des délimiteurs de groupe non appariés et des positions de quantificateur invalides.

Questions Fréquentes

Dans les formules Google Sheets, les chaînes sont entourées de guillemets doubles. Étant donné que regex utilise des barres obliques inverses pour les caractères spéciaux (\d pour les chiffres, \s pour les espaces blancs), et que l'analyseur de formules Sheets n'interprète pas les barres obliques inverses comme des caractères d'échappement à l'intérieur des chaînes, vous les écrivez comme des barres obliques inverses simples : "\d+" correspond à un ou plusieurs chiffres. Si vous voyez un comportement inattendu, essayez le motif avec removeHtml défini sur TRUE pour simplifier le contenu correspondant. Testez votre regex sur regex101.com avant de l'utiliser dans la fonction.

Le groupe 0 (par défaut) renvoie tout le texte correspondant. Le groupe 1 renvoie uniquement le texte à l'intérieur du premier ensemble de parenthèses dans votre motif. Par exemple, avec le motif "Prix: (\€[0-9,]+)" appliqué au texte "Prix: 29,99€", le groupe 0 renvoie "Prix: 29,99€" et le groupe 1 renvoie "29,99€". C'est utile lorsque vous devez correspondre à un motif pour le contexte mais extraire seulement une partie de celui-ci. Vous pouvez avoir plusieurs groupes de capture (groupe 2, groupe 3, etc.) en ajoutant plus de sections entre parenthèses à votre motif.

Activez removeHtml (définir sur TRUE) lorsque : (1) Le texte que vous voulez faire correspondre est divisé entre plusieurs balises HTML, comme un prix affiché comme "<span>€</span><span>29</span>,<span>99</span>". (2) Les balises HTML interfèrent avec vos correspondances de motif. (3) Vous voulez correspondre uniquement au contenu texte visible, en ignorant tout le balisage. (4) Votre regex est conçu pour du texte brut, pas du HTML. Laissez-le sur FALSE lorsque vous devez spécifiquement correspondre aux attributs HTML, aux noms de balises ou à la structure de balisage.

Le moteur regex prend en charge les indicateurs en ligne en utilisant la syntaxe (?indicateurs) au début de votre motif. Utilisez "(?i)" pour la correspondance insensible à la casse, "(?s)" pour le mode ligne unique (le point correspond aux nouvelles lignes), et "(?m)" pour le mode multiligne. Par exemple, "(?i)prix:\s*\€[0-9,]+" correspond aux variantes "Prix:", "PRIX:" et "prix:". Vous pouvez combiner des indicateurs : "(?im)" active à la fois les modes insensible à la casse et multiligne.

Par défaut, le regex est appliqué au code HTML source brut, qui inclut toutes les balises, attributs et balisages. Par exemple, un motif comme "[A-Z][a-z]+" destiné à correspondre aux mots capitalisés pourrait également correspondre aux noms de balises comme "Div" ou "Span". Définissez removeHtml sur TRUE pour supprimer d'abord toutes les balises HTML, afin que votre regex ne voie que le contenu texte visible. Alternativement, rendez votre regex plus spécifique pour exclure les motifs HTML.

Le moteur regex prend en charge la syntaxe complète compatible PCRE, y compris les lookaheads, les lookbehinds, les groupes non capturants, les quantificateurs paresseux et les classes de caractères. Cependant, les motifs extrêmement complexes avec un retour en arrière excessif (comme les quantificateurs imbriqués comme "(a+)+") peuvent provoquer des erreurs de délai d'attente. Gardez les motifs aussi simples et spécifiques que possible. Si vous vous trouvez à écrire des motifs regex très longs, envisagez d'utiliser SCRAPE_BY_CSS_PATH ou SCRAPE_BY_XPATH pour réduire le contenu d'abord, puis utilisez regex sur le résultat.

REGEXEXTRACT est une fonction native de Google Sheets qui applique un regex au texte déjà dans votre feuille de calcul. SCRAPE_BY_REGEX récupère une page web et applique le regex au contenu de la page, combinant la récupération web et l'extraction en une seule étape. Vous pourriez obtenir des résultats similaires en utilisant SCRAPE_BY_CSS_PATH pour obtenir le texte de la page puis REGEXEXTRACT sur le résultat, mais SCRAPE_BY_REGEX est plus efficace car il traite tout côté serveur en une seule requête et peut renvoyer plusieurs correspondances.

Par défaut, le point (.) en regex ne correspond pas aux caractères de nouvelle ligne. Si vous devez correspondre sur plusieurs lignes, utilisez l'indicateur en ligne "(?s)" au début de votre motif pour activer le mode ligne unique, où le point correspond à n'importe quel caractère y compris les nouvelles lignes. Par exemple, "(?s)<div class="product">.*?</div>" correspond à un div et tout son contenu sur plusieurs lignes. L'indicateur (?m) fait en sorte que ^ et $ correspondent au début/fin de chaque ligne plutôt qu'à toute la chaîne.

Fonctions Associées

Commencez à utiliser SCRAPE_BY_REGEX aujourd'hui

Installez Unlimited Sheets pour obtenir SCRAPE_BY_REGEX et 41 autres fonctions puissantes dans Google Sheets.