Elixir:
Analysering av HTML

Hvordan:

Elixir, med sin robuste samtidighetsmodell og funksjonelle programmeringsparadigme, inkluderer ikke innebygde HTML-parsingmuligheter. Du kan imidlertid bruke populære tredjepartsbiblioteker som Floki for dette formålet. Floki gjør HTML-parsing intuitiv og effektiv ved å utnytte Elixirs mønstermatching og piping-funksjoner.

Først, legg til Floki i dine mix.exs-avhengigheter:

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

Deretter kjører du mix deps.get for å installere den nye avhengigheten.

Nå skal vi parse en enkel HTML-streng for å trekke ut data. Vi ser etter titlene inne i <h1>-taggene:

html_content = """
<html>
  <body>
    <h1>Hei, Elixir!</h1>
    <h1>En annen tittel</h1>
  </body>
</html>
"""

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

IO.inspect(titles)

Eksempelutskrift:

["Hei, Elixir!", "En annen tittel"]

For å gå dypere inn, si at du vil trekke ut lenker (<a>-tagger) sammen med deres href-attributter. Her er hvordan du kan oppnå det:

html_content = """
<html>
  <body>
    <a href="https://elixir-lang.org/">Elixirs offisielle nettside</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)

Eksempelutskrift:

[{"Elixirs offisielle nettside", {"href", "https://elixir-lang.org/"}}, {"HexDocs", {"href", "https://hexdocs.pm/"}}]

Denne tilnærmingen lar deg navigere og parse HTML-dokumenter effektivt, noe som gjør oppgaver knyttet til ekstraksjon og manipulasjon av webdata rettfram i Elixir-applikasjoner.