Clojure:
HTML parsen

Wie geht das:

Clojure verfügt nicht über eingebaute Fähigkeiten zum Parsen von HTML, aber Sie können Java-Bibliotheken oder Clojure-Wrapper wie enlive oder hickory nutzen. Hier ist, wie man beide verwendet:

Verwendung von Enlive:

Enlive ist eine beliebte Wahl für das Parsen von HTML und Web Scraping. Fügen Sie es zunächst zu Ihren Projektabhängigkeiten hinzu:

[net.cgrand/enlive "1.1.6"]

Dann können Sie HTML so parsen und navigieren:

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

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

Dieser Schnipsel holt eine HTML-Seite und wählt alle <div> Elemente mit der Klasse some-class aus.

Die Ausgabe könnte folgendermaßen aussehen:

({:tag :div, :attrs {:class "some-class"}, :content ["Hier ist etwas Inhalt."]})

Verwendung von Hickory:

Hickory bietet eine Möglichkeit, HTML in ein Format zu parsen, das in Clojure einfacher zu bearbeiten ist. Fügen Sie Hickory Ihren Projektabhängigkeiten hinzu:

[hickory "0.7.1"]

Hier ist ein einfaches Beispiel:

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

;; Parsen des HTML in das Hickory-Format
(let [doc (hickory/parse "<html><body><div id='main'>Hallo, Welt!</div></body></html>")]
  ;; Wählen Sie das Div mit der ID 'main'
  (select/select (select/id "main") doc))

Dieser Code parst einen einfachen HTML-String und verwendet einen CSS-Selektor, um ein div mit der ID main zu finden.

Beispielausgabe:

[{:type :element, :tag :div, :attrs {:id "main"}, :content ["Hallo, Welt!"]}]

Sowohl enlive als auch hickory bieten robuste Lösungen für das Parsen von HTML in Clojure, wobei sich enlive mehr auf das Templating konzentriert und hickory die Datentransformation betont.