Haskell:
Analyse Syntaxique du HTML

Comment faire :

Pour parser du HTML en Haskell, nous utiliserons la bibliothèque tagsoup pour sa simplicité et sa flexibilité. Commencez par installer la bibliothèque en ajoutant tagsoup au fichier cabal de votre projet ou en exécutant cabal install tagsoup.

{-# LANGUAGE OverloadedStrings #-}

import Text.HTML.TagSoup

-- Exemple de HTML pour la démonstration
let sampleHtml = "<html><body><p>Apprenez Haskell !</p><a href='http://example.com'>Cliquez ici</a></body></html>"

-- Parser le HTML et filtrer pour les liens (balises a)
let tags = parseTags sampleHtml
let links = [fromAttrib "href" tag | tag <- tags, isTagOpenName "a" tag]

-- Imprimer les liens extraits
print links

Sortie exemple :

["http://example.com"]

Pour des besoins de parsing HTML plus sophistiqués, envisagez d’utiliser la bibliothèque pandoc, surtout si vous travaillez avec la conversion de documents. Elle est exceptionnellement polyvalente mais vient avec plus de complexité :

import Text.Pandoc

-- En supposant que vous ayez un document Pandoc (doc) chargé, par exemple, en lisant un fichier
let doc = ... -- Votre document Pandoc va ici

-- Convertir le document en chaîne HTML
let htmlString = writeHtmlString def doc

-- Maintenant, vous devriez parser `htmlString` comme ci-dessus ou procéder selon vos besoins.

Gardez à l’esprit que pandoc est une bibliothèque beaucoup plus grande qui se concentre sur la conversion entre de nombreux formats de balisage, donc utilisez-la si vous avez besoin de ces capacités supplémentaires ou si vous travaillez déjà avec des formats de documents dans votre application.