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