2013-03-18 12 views
6

Ich bin neu in Clojure und ich brauche ein paar Beispiele. Bitte zeigen Sie mir, wie HTML-Datei mit Clojure zu analysieren?Wie HTML-Datei mit Clojure zu analysieren?

+0

Probieren Sie http://stackoverflow.com/questions/3628958/good-clojure-code-examples –

Antwort

17

Enlive ist ein großartiges Werkzeug dafür. Kurz:

(ns foo.bar 
    (:require [net.cgrand.enlive-html :as html])) 

(defn fetch-page [url] 
    (html/html-resource (java.net.URL. url))) 

Here ein nettes Tutorial ist es auf der Verwendung sowohl als Schaber/Parser und als Template-Engine:

Here ist ein kurzes Beispiel eine Seite von Schaben.

Eine andere Option ist clj-tagsoup. Enlive verwendet auch tagsoup, hat aber zusätzlich einen Pluggable Parser, so dass Sie Unterstützung für andere Parser hinzufügen können.

+0

Kann ich HTML-Datei ohne Envile oder einen anderen Parser analysieren, nur mit Clojure? – slawter

+0

Nun, Sie können den Inhalt einer Webseite als String erhalten, indem Sie nur: (slurp "http://www.example.com"), aber um mit dem Inhalt in einer überschaubaren Weise arbeiten zu können, benötigen Sie einen Parser (wie beleben). – ebaxt

4

Clojures xmlparsing Bibliothek ist für Sie da.

Analysiert und lädt die Quelle s, die eine Datei, InputStream oder String sein kann, die einen URI benennt. Gibt eine Struktur der xml/element struct-map, , zurück, die die Schlüssel: tag,: attrs und: content hat. und accessor fns tag, attrs und inhalt. Andere Parser können, indem startparse geliefert werden, eine fn eine Quelle und ein Content nehmen und Zurückgeben eines Parser

Oder nutzen enlive, dann ist es Rahmen voll auf clojure oder Java HtmlCleaner basiert.