我正在尝试使用Clojure和Enlive在其中一个属性具有我指定的值的条件下提取p
html标记的内容。像这样的东西
<p itemprop="description"> Some content I want to extract </p>
所以,如果Some content I want to extract
,我想获得itemprop="description"
。
我对Clojure很新,所以帮助会很棒。
答案 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 ")