Enlive - Extract content of tag if attribute has designated value
Asked Answered
F

1

9

I am trying use Clojure and Enlive to extract content of p html tag under condition that one of attributes has values I designated. Something like this

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

So I want to get Some content I want to extract if itemprop="description".

I am very new to Clojure so help would be great.

Fuzz answered 20/9, 2013 at 6:39 Comment(0)
F
10

To get the text content of any node with the specific attribute, the selector would look something like the following:

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

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

If the contents contain a mix of text and tags, and you wanted to keep both of them, you should use net.cgrand.enlive-html/any-node instead of net.cgrand.enlive-html/text-node.

You can test it with the following:

(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 ")
Faltboat answered 20/9, 2013 at 7:34 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.