私はenlive-tutorialに従いましたが、Webを解析するためのEnliveの力に感銘を受けたと言わなければなりません。今、私はここで利用可能なscrap3.cljをさらに調べるようになりました:https ://github.com/swannodette/enlive-tutorial/blob/master/src/tutorial/scrape3.clj
Swannodetteはこの例の設計で素晴らしい仕事をしましたが、少し乾燥させることができたと思います。
私の質問:この抽出関数を書き直して、ドライヤーにしますか?
(defn extract [node]
(let [headline (first (html/select [node] *headline-selector*))
byline (first (html/select [node] *byline-selector*))
summary (first (html/select [node] *summary-selector*))
result (map html/text [headline byline summary])]
(zipmap [:headline :byline :summary] (map #(re-gsub #"\n" "" %) result))))
プログラムの他の要素について他のアイデアがある場合は、遠慮なく共有してください。
編集:私は遊んで思いついた:
(defn extract [node]
(let [s [*headline-selector* *byline-selector* *summary-selector*]
selected (map #(html/text (first (html/select [node] %))) s)
cleaned (map #(re-gsub #"\n" "" %) selected)]
(zipmap [:headline :byline :summary] cleaned)))