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