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.

Vuk Stanković
  • 7,864
  • 10
  • 41
  • 65

1 Answers1

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 ")
Jared314
  • 5,181
  • 24
  • 30