Enlive - 如果属性具有指定值,则提取标记的内容

时间:2013-09-20 06:39:59

标签: clojure enlive

我正在尝试使用Clojure和Enlive在其中一个属性具有我指定的值的条件下提取p html标记的内容。像这样的东西

<p itemprop="description"> Some content I want to extract </p>

所以,如果Some content I want to extract,我想获得itemprop="description"

我对Clojure很新,所以帮助会很棒。

1 个答案:

答案 0 :(得分:10)

要获取具有特定属性的任何节点的文本内容,选择器将如下所示:

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

[(e/attr= :itemprop "description") e/text-node]

如果内容包含文字和标签的混合,并且您希望同时保留它们,则应使用net.cgrand.enlive-html/any-node代替net.cgrand.enlive-html/text-node

您可以使用以下方法对其进行测试:

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

(def data "<p itemprop=\"description\"> Some content I want to extract </p>")

(e/select-nodes* (e/html-snippet data)
                 [(e/attr= :itemprop "description") e/text-node])
  ;=> (" Some content I want to extract ")