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 linksPrzykł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.