clojure - 获取html标签的属性 - Enlive

标签 clojure enlive

我试图获取将属性 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对于 deftemplatedefsnippet

关于clojure - 获取html标签的属性 - Enlive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18916797/

相关文章:

dictionary - 如何在 clojure 中获取映射的嵌套键?

clojure - 在 deftemplate 中绑定(bind)本地 var 以进行激活

clojure - 从循环内附加到 clojure 向量

performance - 为什么 Clojure Hello World 程序与 Java 和 Python 相比如此慢?

compiler-construction - 使宏和函数更无缝地集成

clojure, 活跃, 多站点

clojure - Enlive 中的可变 HTML 模板

regex - 使用 Enlive 和 Clojure 提取 MLA 引用的 HTML

clojure - 尝试理解 Clojure