Clojarsにweb-scraperというのを上げてみた
最近はClojureを趣味で書いてまして、web-scraperというものをつくって clojarsというサイトに上げたのでご報告。まあ、単なるWebページをスクレイプするという ものなんですが、HtmlUnitというJavaのライブラリを使っていてJavaScriptを解釈して くれるので、最近のJavaScriptいっぱい使っているサイトでもある程度スクレイプできる というものです。
こんな感じで project.clj に足してもらって lein deps でインストールして
:dependencies [[org.clojars.ka2u/web-scraper "0.0.2"]]
こんな感じでスクレイプできます。
(ns something.scrape
(:require [org.clojars.ka2u/web.scraper :refer :all]
[clojure.pprint :as pp]))
(defn scrape []
(let [client (default-mode! (make-client browser-chrome))]
(-> (get-page client "http://example.com")
(page->enlive)
(select-text-node [:div#foo :table :tbody :tr :td])
(pp/pprint))))
(scrape)
まだ、Clojure書き始めてそんなにたってないので、書き方とか自信なかったんですが 先日 Tokyo.clj #22 という勉強会に参加して、主催者の@tnoborioさんとペアプロする 機会に恵まれ、このライブラリの中身を見てもらえまして、そこそこまともだということ がわかったのでよかったです。
ペアプロでは、3つのマクロをひとつに整理すること、set系のメソッドは!をつけるなどを やりました。時間内に終わらなくて、しかも最終的には2つのマクロになりましたが コードはだいぶ減りました。やはり、知っているひとにコード見てもらえるのは自信になるので とてもよかったなと思います。