Comment supprimer le balisage HTML d'un texte avec Google Sheets ?

Comment supprimer le balisage HTML d'un texte avec Google Sheets ?


Comment supprimer le balisage HTML d'un texte avec Google Sheets ?

Antoine Brisset
Antoine Brisset
 — TEMPS DE LECTURE : 2 MIN
Comment supprimer le balisage HTML d'un texte avec Google Sheets ?
Photo by Markus Spiske / Unsplash

Imagine : tu viens de scraper des blocs entiers de code HTML et tu dois en extraire le contenu texte.

Comment tu t'y prendrais pour supprimer automatiquement les balises et conserver uniquement le texte ?

J'ai souvent été confronté à ce problème, alors je te montre comment faire dans Google Sheets.

Étape 1 : trouver la bonne regex

Pour nettoyer ce code HTML, il faut d'abord trouver la regex qui va cibler tous les tags HTML présents.

L'expression régulière suivante devrait faire l'affaire : <[^>]+>

Explications :

  • la chaîne doit commencer par un chevron ouvrant <
  • suivi de n'importe quel caractère sauf un chevron fermant [^>], répété une ou plusieurs fois (+)
  • suivi d'un chevron fermant >

Problème : si le HTML contient des balises script, noscript, ou style, elles vont certes être supprimées, mais pas leur contenu.

Du coup, je vais affiner un peu mon expression régulière.

La voici : <((no)?script|style)[^<]+<\/((no)?script|style)>|<[^>]+>

Explications :

  • la chaîne doit commencer par un chevron ouvrant <
  • suivi d'une balise script, noscript, ou style : ((no)?script|style)
  • suivi de n'importe quel caractère, sauf un chevron ouvrant, répété une ou plusieurs fois [^<]+
  • suivi d'un chevron ouvrant et d'un slash <\/
  • suivi de noscript, script ou style ((no)?script|style)
  • ...ou alors la chaîne doit matcher la première regex citée <[^>]+>
Vérification dans Rubular ✓

Étape 2 : rechercher/remplacer dans Google Sheets

Maintenant que j'ai trouvé la regex, direction Google Sheets.

Je vais utiliser la fonction REGEXREPLACE, en lui passant en arguments :

  • le texte à remplacer
  • l'expression régulière
  • la chaîne de remplacement (chaîne vide)

Ce qui donne :

=REGEXREPLACE(A2;"<((no)?script|style)[^<]+<\/((no)?script|style)>|<[^>]+>";"")
Suppression des balises HTML

Problème : les retours à la ligne dans le code sont présents aussi dans le texte de sortie.

Je vais donc utiliser à nouveau la fonction REGEXREPLACE pour m'en débarrasser (je les remplace par un seul et unique retour à la ligne avec CHAR(10)).

J'utilise également TRIM pour supprimer les espaces au début et à la fin.

=TRIM(REGEXREPLACE(REGEXREPLACE(D11;"<((no)?script|style)[^<]+<\/((no)?script|style)>|<[^>]+>";"");"\n+";CHAR(10)))
Suppression des balises HTML + retours à la ligne

Et voilà !

Commentaires

Posts les plus consultés de ce blog

💥 TOP Best Chat GPT Prompts for Marketers - 2024

La liste de contrôle SEO

Meilleurs outils de référencement 🛠 organisée par Saijo George

Insérer un formulaire de contact - Zbooing : Astuces pour Google Sites

100 outils pour lancer sa startup sans argent (mais pas sans talent)

30 prompts marketing ChatGPT à utiliser d'urgence ! | Conseils Rédaction Web

💥Top BEST invites ChatGPT pour le succès du dropshipping *° 2024

Questions et réponses sur l'évaluation de la certification YouTube Music en 2021 + examen final Certification Ateliers Numériques 2022

La liste de contrôle SEO complète en 51 points pour 2024

Les meilleurs GPTs pour vous aider dans votre travail de rédaction