9

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

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

所以我想得到Some content I want to extractif itemprop="description"

我对 Clojure 很陌生,所以帮助会很大。

4

1 回答 1

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 ")
于 2013-09-20T07:34:24.290 回答