Haskell:
Tolka HTML

Hur gör man:

För att parsa HTML i Haskell kan vi använda sig av biblioteket hxt, som står för Haskell XML Toolbox. Här är en snabb uppvisning:

import Text.XML.HXT.Core

main :: IO ()
main = do
    let html = "<html><body><p>Hello, world!</p></body></html>"
    -- Parse the HTML and get all paragraph contents
    contents <- runX $ readString [withParseHTML yes, withWarnings no] html
                    >>> deep (isElem >>> hasName "p")
                    >>> getChildren >>> getText
    mapM_ putStrLn contents

Detta kommer att skriva ut:

Hello, world!

Djupdykning:

HTML-parsning i Haskell började få uppmärksamhet när webbutveckling blev mer funktionell. hxt är inte det enda biblioteket för att parsa HTML. Alternativ inkluderar tagsoup och pandoc för olika användningsområden, från lätta till tunga parsinguppgifter. hxt använder en kombination av laziness och arrow syntax för att hantera XML-data, vilket passar bra för Haskell’s funktionella paradigm.

I parsingprocessen omvandlar hxt HTML-dokumentet till en trädstruktur, ett så kallat Document Object Model (DOM), som sedan kan traverseras och manipuleras med arrows. Just hxt är känt för sin flexibilitet och kraft, men kan ha en brant inlärningskurva jämfört med mer imperativa bibliotek.

Se även: