Clojure:
Analisando HTML
Como fazer:
Clojure não possui capacidades de análise de HTML internamente, mas você pode utilizar bibliotecas Java ou invólucros Clojure como enlive
ou hickory
. Aqui está como usar ambos:
Usando Enlive:
Enlive é uma escolha popular para análise de HTML e raspagem web. Primeiro, inclua-o nas dependências do seu projeto:
[net.cgrand/enlive "1.1.6"]
Então, você pode analisar e navegar por HTML assim:
(require '[net.cgrand.enlive-html :as html])
(let [doc (html/html-resource (java.net.URL. "http://example.com"))]
(html/select doc [:div.some-class]))
Este trecho de código busca uma página HTML e seleciona todos os elementos <div>
com a classe some-class
.
A saída pode parecer com:
({:tag :div, :attrs {:class "some-class"}, :content ["Aqui está algum conteúdo."]})
Usando Hickory:
Hickory oferece uma maneira de analisar HTML em um formato que é mais fácil de trabalhar em Clojure. Adicione Hickory às dependências do seu projeto:
[hickory "0.7.1"]
Aqui está um exemplo simples:
(require '[hickory.core :as hickory]
'[hickory.select :as select])
;; Analise o HTML no formato Hickory
(let [doc (hickory/parse "<html><body><div id='main'>Olá, mundo!</div></body></html>")]
;; Selecione o div com id 'main'
(select/select (select/id "main") doc))
Este código analisa uma string HTML simples e usa um seletor CSS para encontrar um div
com o ID main
.
Exemplo de saída:
[{:type :element, :tag :div, :attrs {:id "main"}, :content ["Olá, mundo!"]}]
Tanto enlive
quanto hickory
oferecem soluções robustas para análise de HTML em Clojure, com enlive
focando mais em templating e hickory
enfatizando transformação de dados.