2013-03-18 141 views
6

我是clojure的新手,我需要一些例子。請告訴我如何使用clojure解析html文件?如何使用clojure解析html文件?

+0

嘗試http://stackoverflow.com/questions/3628958/good-clojure-code-examples – 2013-03-18 10:51:48

回答

17

Enlive是一個很好的工具。總之:

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

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

Here是使用它既可作爲刮刀/分析器和作爲模板引擎一個很好的教程:

Here是刮頁面的簡單例子。

另一種選擇是clj-tagsoup。 Enlive還使用了tagsoup,但另外還有一個可插入的解析器,因此您可以添加對其他解析器的支持。

+0

我可以不使用envile或其他解析器解析html文件,只使用clojure嗎? – slawter 2013-03-18 10:52:22

+0

那麼,你可以通過只做一個字符串來獲取網頁的內容:(slurp「http://www.example.com」),但爲了以一種可管理的方式處理內容,你需要一個解析器(如有活力)。 – ebaxt 2013-03-18 10:58:48

4

Clojure的xmlparsing圖書館是爲你準備的。

解析並加載源文件,它可以是File,InputStream或 String命名URI。返回包含鍵:標記,:attrs和:content的xml/element struct-map樹, 。和訪問者fns標籤,以及內容。其他解析器可以通過傳遞 startparse,一個FN採取源和ContentHandler中並返回一個 解析器

或者使用enlive提供,它是框架完全在Clojure的,或者使用基於Java的HtmlCleaner