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 - на трансформації даних.