Clojure:
פיענוח HTML

איך לעשות:

ב-Clojure אין יכולות פענוח HTML מובנות, אך ניתן לנצל ספריות של Java או מעטפות של Clojure כגון enlive או hickory. הנה כיצד להשתמש בשניהם:

באמצעות Enlive:

Enlive הוא בחירה פופולרית לפענוח HTML ולגריפת אתרים. ראשית, כלול אותו בתלותיות הפרויקט שלך:

[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 ["הנה קצת תוכן."]})

באמצעות Hickory:

Hickory מספק דרך לפענח HTML לפורמט שנוח יותר לעבוד איתו ב-Clojure. הוסף את Hickory לתלותיות הפרויקט שלך:

[hickory "0.7.1"]

הנה דוגמה פשוטה:

(require '[hickory.core :as hickory]
         '[hickory.select :as select])

;; פרסור ה-HTML לפורמט Hickory
(let [doc (hickory/parse "<html><body><div id='main'>שלום, עולם!</div></body></html>")]
  ;; בחירת ה-div עם ה-id 'main'
  (select/select (select/id "main") doc))

קוד זה מפרסר מחרוזת HTML פשוטה ומשתמש בבורר CSS כדי למצוא div עם ה-ID main.

דוגמה לפלט:

[{:type :element, :tag :div, :attrs {:id "main"}, :content ["שלום, עולם!"]}]

גם enlive וגם hickory מציעים פתרונות מוצקים לפענוח HTML ב-Clojure, כש-enlive מתמקד יותר בתבניות ו-hickory מדגיש המרה של נתונים.