Clojure:
Tolka HTML
Hur man gör:
Clojure har inte inbyggd förmåga att tolka HTML, men du kan utnyttja Java-bibliotek eller Clojure-wrapper som enlive
eller hickory
. Så här använder du båda:
Använda Enlive:
Enlive är ett populärt val för HTML-tolkning och webbskrapning. Först inkluderar du det i ditt projekts beroenden:
[net.cgrand/enlive "1.1.6"]
Sedan kan du tolka och navigera i HTML så här:
(require '[net.cgrand.enlive-html :as html])
(let [doc (html/html-resource (java.net.URL. "http://example.com"))]
(html/select doc [:div.some-class]))
Detta kodsnutt hämtar en HTML-sida och väljer alla <div>
-element med klassen some-class
.
Utdata kan se ut som:
({:tag :div, :attrs {:class "some-class"}, :content ["Här är lite innehåll."]})
Använda Hickory:
Hickory tillhandahåller ett sätt att tolka HTML till ett format som är lättare att arbeta med i Clojure. Lägg till Hickory i dina projekts beroenden:
[hickory "0.7.1"]
Här är ett enkelt exempel:
(require '[hickory.core :as hickory]
'[hickory.select :as select])
;; Tolka HTML till Hickory-format
(let [doc (hickory/parse "<html><body><div id='main'>Hej, världen!</div></body></html>")]
;; Välj div med id 'main'
(select/select (select/id "main") doc))
Den här koden tolkar en enkel HTML-sträng och använder en CSS-väljare för att hitta en div
med ID main
.
Exempel på utdata:
[{:type :element, :tag :div, :attrs {:id "main"}, :content ["Hej, världen!"]}]
Både enlive
och hickory
erbjuder robusta lösningar för HTML-tolkning i Clojure, där enlive
fokuserar mer på mallning och hickory
betonar datatransformation.