Clojure:
การวิเคราะห์ HTML
วิธีการ:
Clojure ไม่มีความสามารถในการแยกวิเคราะห์ HTML ที่ติดตั้งมาพร้อมกับระบบ, แต่คุณสามารถใช้ไลบรารีของ Java หรือ Clojure wrapper เช่น enlive
หรือ hickory
. นี่คือวิธีการใช้ทั้งสอง:
การใช้ Enlive:
Enlive เป็นตัวเลือกที่นิยมสำหรับการแยกวิเคราะห์ HTML และการเก็บข้อมูลจากเว็บ. ขั้นแรก, รวมมันเข้ากับ dependencies ของโครงการของคุณ:
[net.cgrand/enlive "1.1.6"]
จากนั้น, คุณสามารถแยกวิเคราะห์และนำทาง HTML ได้ดังนี้:
(require '[net.cgrand.enlive-html :as html])
(let [doc (html/html-resource (java.net.URL. "http://example.com"))]
(html/select doc [:div.some-class]))
ตัวอย่างนี้ดึงหน้า HTML และเลือกทุก <div>
ที่มีคลาส some-class
.
ผลลัพธ์อาจมีลักษณะดังนี้:
({:tag :div, :attrs {:class "some-class"}, :content ["Here's some content."]})
การใช้ Hickory:
Hickory ให้วิธีการแยกวิเคราะห์ HTML เป็นรูปแบบที่ง่ายต่อการใช้งานใน Clojure มากขึ้น. เพิ่ม Hickory เข้ากับ dependencies ของโครงการคุณ:
[hickory "0.7.1"]
นี่คือตัวอย่างง่ายๆ:
(require '[hickory.core :as hickory]
'[hickory.select :as select])
;; แยกวิเคราะห์ HTML เป็นรูปแบบ Hickory
(let [doc (hickory/parse "<html><body><div id='main'>Hello, world!</div></body></html>")]
;; เลือก div ที่มี id 'main'
(select/select (select/id "main") doc))
โค้ดนี้แยกวิเคราะห์สตริง HTML ง่ายๆ และใช้ CSS selector หา div
ที่มี ID main
.
ผลลัพธ์ตัวอย่าง:
[{:type :element, :tag :div, :attrs {:id "main"}, :content ["Hello, world!"]}]
ทั้ง enlive
และ hickory
เสนอวิธีการที่มั่นคงสำหรับการแยกวิเคราะห์ HTML ใน Clojure, โดย enlive
มุ่งเน้นไปที่การสร้างเทมเพลตและ hickory
มุ่งเน้นไปที่การเปลี่ยนแปลงข้อมูล.