การดาวน์โหลดหน้าเว็บ

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, ทำให้มันมีประสิทธิภาพมากขึ้นสำหรับคำขอหลายๆ อัน.

ดูเพิ่มเติม