Analyse Syntaxique du HTML

Elixir:
Analyse Syntaxique du HTML

Comment faire :

Elixir, avec son modèle robuste de concurrence et son paradigme de programmation fonctionnelle, n’inclut pas de capacités d’analyse HTML intégrées. Cependant, vous pouvez utiliser des bibliothèques tierces populaires comme Floki à cet effet. Floki rend l’analyse de HTML intuitive et efficace, en tirant parti des fonctionnalités de correspondance de motifs et de mise en pipeline d’Elixir.

Tout d’abord, ajoutez Floki à vos dépendances dans mix.exs :

defp deps do
  [
    {:floki, "~> 0.31.0"}
  ]
end

Ensuite, exécutez mix deps.get pour installer la nouvelle dépendance.

Maintenant, analysons une simple chaîne HTML pour extraire des données. Nous rechercherons les titres à l’intérieur des balises <h1> :

html_content = """
<html>
  <body>
    <h1>Bonjour, Elixir !</h1>
    <h1>Un Autre Titre</h1>
  </body>
</html>
"""

titles = html_content
         |> Floki.find("h1")
         |> Floki.text()

IO.inspect(titles)

Exemple de sortie :

["Bonjour, Elixir !", "Un Autre Titre"]

Pour approfondir, disons que vous souhaitez extraire des liens (balises <a>) ainsi que leurs attributs href. Voici comment vous pouvez y parvenir :

html_content = """
<html>
  <body>
    <a href="https://elixir-lang.org/">Site Officiel d'Elixir</a>
    <a href="https://hexdocs.pm/">HexDocs</a>
  </body>
</html>
"""

links = html_content
        |> Floki.find("a")
        |> Enum.map(fn({_, attrs, [text]}) -> {text, List.keyfind(attrs, "href", 0)} end)
        
IO.inspect(links)

Exemple de sortie :

[{"Site Officiel d'Elixir", {"href", "https://elixir-lang.org/"}}, {"HexDocs", {"href", "https://hexdocs.pm/"}}]

Cette approche vous permet de naviguer et d’analyser efficacement les documents HTML, rendant les tâches d’extraction et de manipulation de données web simples dans les applications Elixir.