Clojure:
Analiza składniowa HTML

Jak to zrobić:

Clojure nie posiada wbudowanych możliwości parsowania HTML, ale możesz użyć bibliotek Java lub wrapperów Clojure, takich jak enlive lub hickory. Oto jak używać obu:

Używając Enlive:

Enlive to popularny wybór do parsowania HTML i skrobania stron internetowych. Najpierw dołącz go do zależności swojego projektu:

[net.cgrand/enlive "1.1.6"]

Następnie możesz parsować i nawigować po HTML w następujący sposób:

(require '[net.cgrand.enlive-html :as html])

(let [doc (html/html-resource (java.net.URL. "http://example.com"))]
  (html/select doc [:div.some-class]))

Ten fragment kodu pobiera stronę HTML i wybiera wszystkie elementy <div> z klasą some-class.

Wynik może wyglądać tak:

({:tag :div, :attrs {:class "some-class"}, :content ["Oto jakaś treść."]})

Używając Hickory:

Hickory zapewnia sposób na parsowanie HTML do formatu, który jest łatwiejszy do pracy w Clojure. Dodaj Hickory do zależności swojego projektu:

[hickory "0.7.1"]

Oto prosty przykład:

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

;; Parsuj HTML do formatu Hickory
(let [doc (hickory/parse "<html><body><div id='main'>Witaj, świecie!</div></body></html>")]
  ;; Wybierz div z id 'main'
  (select/select (select/id "main") doc))

Ten kod parsuje prosty ciąg HTML i używa selektora CSS, aby znaleźć div z ID main.

Przykładowy wynik:

[{:type :element, :tag :div, :attrs {:id "main"}, :content ["Witaj, świecie!"]}]

Zarówno enlive, jak i hickory oferują solidne rozwiązania do parsowania HTML w Clojure, przy czym enlive skupia się bardziej na szablonach, a hickory podkreśla transformację danych.