Получить атрибут HTML-тега - Enlive
Я пытался получить src
атрибут img
тег с атрибутом 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, который я передаю в качестве аргумента.
1 ответ
Решение
В этом случае вам нужен тег, который содержит атрибуты и содержимое, поэтому вы бы отбросили 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, если вы хотите более общие преобразования для файлов или ресурсов в целом, посмотрите документацию для deftemplate
а также defsnippet
,