Haskell:
Descargando una página web
Cómo hacerlo:
Vamos a usar Haskell junto con algunas librerías prácticas. Asegúrate de tener instalados stack
y http-conduit
. Si no los tienes, instálalos usando stack install http-conduit
. Aquí está el código:
import Network.HTTP.Simple
main :: IO ()
main = do
response <- httpLBS "http://example.com"
let statusCode = getResponseStatusCode response
if statusCode == 200
then putStrLn $ "Download successful! Status code: " ++ show statusCode
else print statusCode
print $ getResponseBody response
Si todo va bien, verás:
Download successful! Status code: 200
"<html>...</html>" -- Aquí estará el contenido de la página
Análisis Profundo:
Descargar páginas web es un concepto tan antiguo como la web misma. Aunque el método básico no ha cambiado mucho, las herramientas sí. Antes se usaba curl
o wget
en línea de comandos, y en Haskell, librerías como http-conduit
facilitan la tarea.
Otras opciones modernas incluyen wreq
y http-client
. Cada una tiene sus pros y contras. Por ejemplo, http-conduit
es bueno para gestionar conexiones persistentes mientras que wreq
tiene una interfaz más simple.
Detalles de implementación: en el fondo, la descarga de una página es una simple petición HTTP. Sin embargo, el manejo de errores, redirecciones y sesiones puede complicarse. Es una buena idea familiarizarse con los códigos de estado HTTP y el manejo de excepciones en Haskell.
Ver También:
- La documentación de
http-conduit
: https://www.stackage.org/package/http-conduit - La biblioteca
wreq
para comparar: https://hackage.haskell.org/package/wreq - Tutorial de
http-client
: https://hackage.haskell.org/package/http-client-tls