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.