Haskell:
Analiza składniowa HTML
Jak to zrobić:
Do parsowania HTML w Haskellu użyjemy biblioteki tagsoup
ze względu na jej prostotę i elastyczność. Najpierw upewnij się, że zainstalowałeś bibliotekę, dodając tagsoup
do pliku cabal Twojego projektu lub uruchamiając cabal install tagsoup
.
{-# LANGUAGE OverloadedStrings #-}
import Text.HTML.TagSoup
-- Przykładowy HTML do demonstracji
let sampleHtml = "<html><body><p>Ucz się Haskella!</p><a href='http://example.com'>Kliknij tutaj</a></body></html>"
-- Parsowanie HTML i filtrowanie linków (tagów a)
let tags = parseTags sampleHtml
let links = [fromAttrib "href" tag | tag <- tags, isTagOpenName "a" tag]
-- Wydrukowanie wyekstrahowanych linków
print links
Przykładowe wyjście:
["http://example.com"]
Dla bardziej zaawansowanych potrzeb parsowania HTML rozważ użycie biblioteki pandoc
, szczególnie jeśli pracujesz z konwersją dokumentów. Jest wyjątkowo wszechstronna, ale wiąże się z większą złożonością:
import Text.Pandoc
-- Zakładając, że masz załadowany dokument Pandoc (doc), np. z czytania pliku
let doc = ... -- Tutaj wprowadź swój dokument Pandoc
-- Konwersja dokumentu do łańcucha HTML
let htmlString = writeHtmlString def doc
-- Teraz możesz sparsować `htmlString` jak powyżej lub postępować zgodnie z własnymi wymaganiami.
Pamiętaj, że pandoc
to znacznie większa biblioteka skoncentrowana na konwersji między licznymi formatami znaczników, więc użyj jej, jeśli potrzebujesz tych dodatkowych możliwości lub jeśli już zajmujesz się formatami dokumentów w swojej aplikacji.