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