Получить атрибут 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,

Другие вопросы по тегам