我试图获取将属性 itemprop
设置为某个值的 img
标记的 src
属性。
好的,我得到了 img
标签,并且我能够根据我今天早些时候在这里提出的问题提取内部文本(在这种情况下,显然没有文本),但我不能找到任何可以帮助我返回 src
属性值
(:require [net.cgrand.enlive-html :as e])
(defn getbyitemprop
"Extract node content from HTML"
[html value]
(e/select-nodes* (e/html-snippet html)
[(e/attr= :itemprop value) e/text-node]))
这通过我作为参数传递的 itemprop 获取元素的内部文本
最佳答案
在本例中,您需要包含属性和内容的标记,因此您需要删除选择器的 net.cgrand.enlive-html/text-node
部分。
(defn getbyitemprop
"Extract node content from HTML"
[html value]
(e/select-nodes* (e/html-snippet html)
[(e/attr= :itemprop value)]))
(getbyitemprop
"<p itemprop=\"description\" src=\"testvalue\"> Some content I want to extract </p>"
"description")
;=> ({:tag :p,
; :attrs {:src "testvalue", :itemprop "description"},
; :content (" Some content I want to extract ")})
这适用于 html 的动态字符串,如果您想要对文件或一般资源进行更通用的转换,请查看 documentation对于 deftemplate
和 defsnippet
。
关于clojure - 获取html标签的属性 - Enlive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18916797/