Clojure:
Analisi del HTML
Come fare:
Clojure non dispone di capacità integrate di parsing HTML, ma puoi sfruttare le librerie Java o gli wrapper Clojure come enlive
o hickory
. Ecco come utilizzare entrambi:
Usare Enlive:
Enlive è una scelta popolare per il parsing HTML e lo scraping web. Prima di tutto, includilo nelle dipendenze del tuo progetto:
[net.cgrand/enlive "1.1.6"]
Poi, puoi analizzare e navigare l’HTML così:
(require '[net.cgrand.enlive-html :as html])
(let [doc (html/html-resource (java.net.URL. "http://example.com"))]
(html/select doc [:div.some-class]))
Questo frammento recupera una pagina HTML e seleziona tutti gli elementi <div>
con la classe some-class
.
L’output potrebbe assomigliare a:
({:tag :div, :attrs {:class "some-class"}, :content ["Ecco del contenuto."]})
Usare Hickory:
Hickory offre un modo per analizzare l’HTML in un formato che è più facile da gestire in Clojure. Aggiungi Hickory alle dipendenze del tuo progetto:
[hickory "0.7.1"]
Ecco un esempio semplice:
(require '[hickory.core :as hickory]
'[hickory.select :as select])
;; Analizza l'HTML nel formato Hickory
(let [doc (hickory/parse "<html><body><div id='main'>Ciao, mondo!</div></body></html>")]
;; Seleziona il div con id 'main'
(select/select (select/id "main") doc))
Questo codice analizza una semplice stringa HTML e utilizza un selettore CSS per trovare un div
con l’ID main
.
Esempio di output:
[{:type :element, :tag :div, :attrs {:id "main"}, :content ["Ciao, mondo!"]}]
Sia enlive
che hickory
offrono soluzioni robuste per il parsing HTML in Clojure, con enlive
che si concentra maggiormente sul templating e hickory
che enfatizza la trasformazione dei dati.