Clojure:
HTMLの解析
どのようにして:
ClojureにはHTML解析機能が組み込まれていませんが、Javaライブラリやenlive
やhickory
のようなClojureラッパーを活用することができます。以下はその使用方法です:
Enliveを使用する:
EnliveはHTML解析やウェブスクレイピングに人気の選択肢です。まず、プロジェクトの依存関係に追加してください:
[net.cgrand/enlive "1.1.6"]
次に、HTMLを解析してナビゲートするには、以下のようにします:
(require '[net.cgrand.enlive-html :as html])
(let [doc (html/html-resource (java.net.URL. "http://example.com"))]
(html/select doc [:div.some-class]))
このスニペットはHTMLページを取得し、クラスsome-class
を持つ全ての<div>
要素を選択します。
出力は次のようになるかもしれません:
({:tag :div, :attrs {:class "some-class"}, :content ["Here's some content."]})
Hickoryを使用する:
Hickoryは、Clojureで扱いやすい形式にHTMLを解析する方法を提供します。Hickoryをプロジェクトの依存関係に追加してください:
[hickory "0.7.1"]
こちらは簡単な例です:
(require '[hickory.core :as hickory]
'[hickory.select :as select])
;; Hickory形式にHTMLを解析する
(let [doc (hickory/parse "<html><body><div id='main'>Hello, world!</div></body></html>")]
;; id'main'のdivを選択する
(select/select (select/id "main") doc))
このコードはシンプルなHTML文字列を解析し、IDがmain
のdiv
をCSSセレクタで見つけます。
サンプル出力:
[{:type :element, :tag :div, :attrs {:id "main"}, :content ["Hello, world!"]}]
enlive
とhickory
はどちらもClojureでのHTML解析に堅牢なソリューションを提供しており、enlive
はテンプレートに、hickory
はデータ変換により重点を置いています。