Clojure:
HTML Parsen

Hoe:

Om HTML in Clojure te parsen, gebruiken we de clj-tagsoup bibliotheek, een wrapper voor de Tagsoup Java-bibliotheek die handig is voor het parsen van real-world HTML.

Voeg eerst de clj-tagsoup-afhankelijkheid toe aan je project:

[clj-tagsoup "0.3.3"] ; Controleer op de nieuwste versie

Nu, laten we wat HTML parsen:

(require '[clj-tagsoup.core :as tagsoup])

; Parseer HTML en krijg een vector van mappen die de geparseerde elementen voorstellen
(def parsed-html (tagsoup/parse-string "<html><body><p>Hallo, Wereld!</p></body></html>"))

; Toegang tot elementen
(println (first parsed-html))

Voorbeelduitvoer:

{:tag :html, :attrs {}, :content [...]}

Om specifieke elementen te extraheren, zoals paragrafen:

(defn extract-paragraphs [html]
  (let [parsed (tagsoup/parse-string html)]
    (filter #(= :p (:tag %)) parsed)))

; Gebruik
(extract-paragraphs "<p>Eerste</p><p>Tweede</p>")

Diepe Duik

HTML parsen in Clojure, net als in andere talen, houdt typisch het navigeren door een boomachtige structuur in. Vroeger kon dit rommelig worden. Bibliotheken zoals Tagsoup hebben het leven makkelijker gemaakt door eigenaardige real-world HTML aan te kunnen.

De functionele aard van Clojure laat ons soepel HTML-gegevens manipuleren. Bibliotheken zoals clj-tagsoup benutten de beproefde hulpmiddelen van Java met een toevoeging van Clojure’s elegantie.

Alternatieve bibliotheken zijn onder andere Enlive en Hickory. Enlive is gespecialiseerd in zowel het parsen als het templaten, waardoor meer complexe operaties mogelijk zijn. Hickory vertaalt HTML naar Clojure-datastructuren voor degenen die een pure Clojure-oplossing verkiezen.

De implementatie richt zich op gemak en een declaratieve stijl. Onder de motorkap gebruikt clj-tagsoup locators en navigators om door HTML te reizen, waardoor een hogere abstractie wordt geboden dan directe DOM-manipulatie.

Zie Ook