2

我试图获取属性设置为某个值srcimg标签的属性。itemprop

好的,我得到了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 获取元素的内部文本

4

1 回答 1

2

在这种情况下,您需要包含属性和内容的标记,因此您将删除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 的动态字符串,如果您想要对文件或一般资源进行更一般的转换,请查看和的文档deftemplatedefsnippet

于 2013-09-20T13:17:13.883 回答