Haskell:
Загрузка веб-страницы
Как это сделать:
Давайте рассмотрим простой пример на основе библиотеки http-conduit
в Haskell. Сначала установите её, используя cabal install http-conduit
. Затем:
import Network.HTTP.Conduit -- Основная сетевая библиотека
import qualified Data.ByteString.Lazy as L -- Нам понадобятся Lazy ByteStrings
-- Функция для загрузки веб-страницы
downloadPage :: String -> IO L.ByteString
downloadPage url = simpleHttp url
main :: IO ()
main = do
-- Использовать функцию для загрузки страницы
content <- downloadPage "http://example.com"
-- Сделать что-то с содержимым, например, распечатать его
L.putStr content
Запустив это, вы увидите HTML http://example.com
на вашем экране.
Подробнее
HTTP запросы в Haskell не всегда были такими аккуратными. Старые библиотеки, например HTTP
, требовали больше шаблонного кода. С http-conduit
, сложность абстрагирована.
Существуют и другие методы, например команда wget
в скрипте оболочки или библиотека requests
в Python. Но они не всегда так же эффективны или выразительны в функциональной среде Haskell.
Под капотом http-conduit
использует Manager для управления пулом соединений и Keep-Alive для HTTP1.1, делая его более эффективным для множественных запросов.
См. также
- Для более продвинутого использования
http-conduit
: http-conduit на Hackage - Для понимания ByteString: ByteString на Hackage