2012-02-16 68 views
4

我需要從HTML頁面的某個部分檢索一些原始HTMLClojure,使用Enlive從選擇器中提取原始HTML?

我寫了刮刀,它抓住適當的div,但它返回一個標籤的地圖。

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

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

(defn parse-test [] 
    (let [url "http://www.ncbi.nlm.nih.gov/pubmedhealth/PMH0000928/" 
     url-data (fetch-url url) 
     id "a693025"] 
    (first (html/select url-data [(keyword (str "#" id "-why"))])))) 

此輸出:

{:tag :div, :attrs {:class "section", :id "a693025-why"}, :content ({:tag :h2, :attrs nil, :content ({:tag :span, :attrs {:class "title"}, :content ("Why is this medication prescribed?")})} {:tag :p, :attrs nil, :content ("Zolpidem is used to treat insomnia (difficulty falling asleep or staying asleep). Zolpidem belongs to a class of medications called sedative-hypnotics. It works by slowing activity in the brain to allow sleep.")})} 

如何將它轉換爲原始的HTML?我找不到任何有用的功能來做到這一點。

回答

5
(apply str (html/emit* [(parse-test)])) 
; => "<div class=\"section\" id=\"a693025-why\"><h2><span class=\"title\">Why is this medication prescribed?</span></h2><p>Zolpidem is used to treat insomnia (difficulty falling asleep or staying asleep). Zolpidem belongs to a class of medications called sedative-hypnotics. It works by slowing activity in the brain to allow sleep.</p></div>"