Elixir:
HTML parsen
Wie geht das:
Elixir, mit seinem robusten Nebenläufigkeitsmodell und dem Paradigma der funktionalen Programmierung, enthält keine integrierten HTML-Parsing-Funktionen. Sie können jedoch beliebte Drittanbieter-Bibliotheken wie Floki
für diesen Zweck verwenden. Floki macht HTML-Parsing intuitiv und effizient und nutzt dabei Elixirs Musterabgleich und Pipe-Funktionen.
Fügen Sie zunächst Floki zu Ihren Abhängigkeiten in mix.exs hinzu:
defp deps do
[
{:floki, "~> 0.31.0"}
]
end
Führen Sie dann mix deps.get
aus, um die neue Abhängigkeit zu installieren.
Jetzt werden wir einen einfachen HTML-String parsen, um Daten zu extrahieren. Wir suchen nach den Titeln in <h1>
-Tags:
html_content = """
<html>
<body>
<h1>Hallo, Elixir!</h1>
<h1>Ein weiterer Titel</h1>
</body>
</html>
"""
titles = html_content
|> Floki.find("h1")
|> Floki.text()
IO.inspect(titles)
Beispielausgabe:
["Hallo, Elixir!", "Ein weiterer Titel"]
Um tiefer einzutauchen, sagen wir, Sie möchten Links (<a>
-Tags) zusammen mit ihren href-Attributen extrahieren. So können Sie das erreichen:
html_content = """
<html>
<body>
<a href="https://elixir-lang.org/">Offizielle Website von 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)
Beispielausgabe:
[{"Offizielle Website von Elixir", {"href", "https://elixir-lang.org/"}}, {"HexDocs", {"href", "https://hexdocs.pm/"}}]
Dieser Ansatz ermöglicht es Ihnen, HTML-Dokumente effizient zu navigieren und zu parsen, wodurch Aufgaben der Webdatenextraktion und -manipulation in Elixir-Anwendungen unkompliziert werden.