Haskell:
Een webpagina downloaden

Hoe:

Laten we beginnen met een eenvoudig voorbeeld waarin we gebruik maken van de http-conduit bibliotheek van Haskell. Installeer het eerst met cabal install http-conduit. Dan:

import Network.HTTP.Conduit -- De belangrijkste netwerkbibliotheek
import qualified Data.ByteString.Lazy as L -- We hebben Lazy ByteStrings nodig

-- Functie om een webpagina te downloaden
downloadPage :: String -> IO L.ByteString
downloadPage url = simpleHttp url

main :: IO ()
main = do
    -- Gebruik de functie om een pagina te downloaden
    content <- downloadPage "http://example.com"
    -- Doe iets met de inhoud, zoals het printen
    L.putStr content

Bij het uitvoeren hiervan zie je de HTML van http://example.com op je scherm.

Diepgaand

HTTP-verzoeken in Haskell zijn niet altijd zo netjes geweest. Oudere bibliotheken zoals HTTP vereisten meer boilerplate code. Met http-conduit wordt de complexiteit weggeabstraheerd.

Er bestaan andere methoden, zoals het wget commando in een shell-script of de requests bibliotheek in Python. Maar deze zijn niet altijd zo efficiënt of expressief in de functionele setting van Haskell.

Onder de motorkap gebruikt http-conduit een Manager om verbinding pooling en Keep-Alive voor HTTP1.1 te beheren, waardoor het efficiënter is voor meerdere verzoeken.

Zie Ook