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