Какую библиотеку я должен использовать в Clojure для структурированного представления веб-страниц [duplicate]

Как сказано, Атрибуты относительно легко создать. Другая часть работы - это создание кода, который его использует. В большинстве случаев вы будете использовать отражение во время выполнения, чтобы изменить поведение, основанное на наличии атрибута или его свойств. Существуют также сценарии, в которых вы будете проверять атрибуты на скомпилированном коде, чтобы сделать какой-то статический анализ. Например, параметры могут быть помечены как ненулевые, а инструмент анализа может использовать это как подсказку.

Использование атрибутов и знание соответствующих сценариев для их использования - основная часть работы.

6
задан Chetter Hummin 18 March 2013 в 12:51
поделиться

2 ответа

Enlive - отличный инструмент для этого. Короче:

(ns foo.bar
  (:require [net.cgrand.enlive-html :as html]))

(defn fetch-page [url]
  (html/html-resource (java.net.URL. url)))

Здесь - хороший учебник по использованию его как скребка / парсера, так и в качестве механизма шаблона:

Здесь - короткий пример соскабливания страницы.

Другой вариант - clj-tagsoup . Enlive также использует tagoup, но, кроме того, имеет подключаемый парсер, поэтому вы можете добавить поддержку для других парсеров.

17
ответ дан ebaxt 23 August 2018 в 01:23
поделиться
  • 1
    Могу ли я анализировать html-файл без envile или другого парсера, используя только clojure? – slawter 18 March 2013 в 12:52
  • 2
    Ну, вы можете получить содержимое веб-страницы в виде строки, только делая: (slurp & quot; example.com & quot; ), но для того, чтобы работать с контентом управляемым образом, вам нужно парсер (например, оживить). – ebaxt 18 March 2013 в 12:58

Clojure xml библиотека синтаксического анализа для вас.

Парширует и загружает источник s, который может быть файлом, InputStream или String, именовавшим URI. Возвращает дерево структурной карты xml / element, которая имеет ключи: tag,: attrs и: content. и аксессуар fns tag, attrs и контент. Другие синтаксические анализаторы могут быть предоставлены путем передачи startparse, fn, берущего источник и ContentHandler, и возвращения парсера

Или используйте enlive , он полностью интегрирован в clojure или использует Java на основе HtmlCleaner .

4
ответ дан cschol 23 August 2018 в 01:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: