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 มุ่งเน้นไปที่การเปลี่ยนแปลงข้อมูล.