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